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

 
 

 

 
 
 
Beiträge des aktuellen Monats
November 2024
MoDiMiDoFrSaSo
 123
45678910
11121314151617
18192021222324
252627282930 
 
© 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