Auslesen des Inhalts einer AXMODEL-Datei

Microsoft Dynamics AX 2012 Management ShellWenn man von Microsoft einen Hotfix oder von einem Microsoft-Partner ein Modul bekommt, bekommt man oft nur ein oder mehrere AXMODEL-Files. Und da ist der Wunsch oft gross, vorab zu wissen, welche Objekte durch das Einspielen dieses Files betroffen ist.

Solche Informationen kann man sich mit der Microsoft Dynamics AX 2012 Management Shell auslesen:

Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details

Das sieht wie folgt aus:

Manifest                   Summary                    Elements
--------                   -------                    --------
Microsoft.Dynamics.AX.F... {\Classes: 3}              {\Classes\WHSLoadLineI...

Diese Ausgabe ist noch nicht sonderlich hilfreich, deshalb werden wir bei unserer Abfrage etwas genauer und fragen nun nur den Pfad aus dem Elements-Container ab:

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path

Ergebnis:

Path
----
\Classes\WHSLoadLineInventTransValidator
\Classes\WHSLoadLineInventTransValidator\canSplitLoadLineMultipleTransactions
\Classes\WHSLoadLineInventTransValidator\checkLoadLinesOpenQty
\Classes\WHSLoadLineInventTransValidator\classDeclaration
\Classes\WHSLoadLineInventTransValidator\createNewLoadLines
\Classes\WHSLoadLineInventTransValidator\init
\Classes\WHSLoadLineInventTransValidator\validateLoadLineDimensionConsistency
\Classes\WHSLoadLineUpdater
\Classes\WHSLoadLineUpdater\createSplitLoadLines
\Classes\WHSLoadLineUpdater\initLoadLine
\Classes\WHSLoadPostEngineBase
\Classes\WHSLoadPostEngineBase\reserveOrder

 

In der obigen Liste sieht man, daß auch Methodennamen mitausgegeben werden. Möchte ich beispielsweise nur Objekte aufgelistet bekommen wissen, kann ich dies wie folgt bewerkstelligen:

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path, ParentHandle | Where{$_.parenthandle -like 0 }

Ergebnis:

Path                                                               ParentHandle
----                                                               ------------
\Classes\WHSLoadLineInventTransValid...                                       0
\Classes\WHSLoadLineUpdater                                                   0
\Classes\WHSLoadPostEngineBase                                                0

 

Dabei ist noch die automatische Anpassung an das Ausgabefenster ein Problem, was dazu führt daß lange Namen abgeschnitten dargestell werden, dies kann man wie folgt umgehen:

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path, ParentHandle | Where{$_.parenthandle -like 0 } | format-table -AutoSize

Ergebnis:

Path                                     ParentHandle
----                                     ------------
\Classes\WHSLoadLineInventTransValidator            0
\Classes\WHSLoadLineUpdater                         0
\Classes\WHSLoadPostEngineBase                      0

 

Will man nun beispielsweise sich nur alle Klassen ausgeben in eine Textdatei ausgeben lassen, geht das wie folgt:

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path, ParentHandle, ElementType | Where{$_.elementtype -like "class" } | Where{$_.parenthandle -like 0 } | format-table -AutoSize | out-file c:\temp\objects.txt

Natürlich kann man dabei sogar sortieren:

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path, ParentHandle, ElementType | Where{$_.elementtype -like "class" } | Sort-object Path | Where{$_.parenthandle -like 0 } | format-table -AutoSize | out-file c:\temp\objects.txt

 

Will man statt einer einfachen Textdatei eine CSV-Datei, ist auch das möglich (dabei muss man Format-Table weglassen):

(Get-AXModel -File 'c:\temp\dynamicsax2012r3_cl4555332.axmodel' -Details).Elements | Select-Object Path, ParentHandle, ElementType | Where{$_.elementtype -like "class" } | Sort-object Path | Where{$_.parenthandle -like 0 } | export-csv -path "c:\temp\objects.csv" -delimiter "," -notypeinformation -encoding utf8 

Und so sieht die CSV-Datei dann aus:

"Path","ParentHandle","ElementType"
"\Classes\WHSLoadLineInventTransValidator","0","Class"
"\Classes\WHSLoadLineUpdater","0","Class"
"\Classes\WHSLoadPostEngineBase","0","Class"
Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2012

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2024
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu