Dynamics AX 2012 umožňuje provádět a automatizovat řadu administračních úkonů pomocí PowerShellu. Jak ale přesně použít každý z oněch PowerShellu příkazů (cmdletů)? To se nechystám popisovat – namísto toho chci ukázat způsob, jak to můžete zjistit sami.
PowerShell konzoli pro Dynamics AX můžete na počítači, na kterém jsou nainstalovány Management utilities (to je volba v instalátoru AX2012), spustit pomocí Start Menu > All Programs > Administrative Tools > Microsoft Dynamics AX 2012 Management Shell .
Při startu konzole se vypíší importovaná sestavení – a to je to, co umožňuje volat cmdlety specifické pro Dynamics AX.
Nyní potřebujeme vědět, jaké příkazy máme k dispozi. Začněme jednoduše – vypíšeme všechny příkazy, které mají v názvu “ax”:
Get-Command *ax*
Dostaneme dlouhý seznam, kde jsou promíchané cmdlety a další soubory. Omezme výstup jen na cmdlety:
Get-Command *ax* -CommandType "Cmdlet"
To už je lepší. S trochou další PowerShell magie můžeme vypsat seznam všech AX cmdletů a sestavení, v kterých jsou obsaženy:
Cmdlet | Assembly |
---|---|
Edit-AXModelManifest | AxUtilLib.PowerShell.dll |
Export-AXModel | AxUtilLib.PowerShell.dll |
Export-AXModelStore | AxUtilLib.PowerShell.dll |
Get-AXModel | AxUtilLib.PowerShell.dll |
Get-AXModelManifest | AxUtilLib.PowerShell.dll |
Grant-AXModelStore | AxUtilLib.PowerShell.dll |
Import-AXModelStore | AxUtilLib.PowerShell.dll |
Initialize-AXModelStore | AxUtilLib.PowerShell.dll |
Install-AXModel | AxUtilLib.PowerShell.dll |
Move-AXModel | AxUtilLib.PowerShell.dll |
New-AXModel | AxUtilLib.PowerShell.dll |
Optimize-AXModelStore | AxUtilLib.PowerShell.dll |
Set-AXModelStore | AxUtilLib.PowerShell.dll |
Test-AXModelData | AxUtilLib.PowerShell.dll |
Uninstall-AXModel | AxUtilLib.PowerShell.dll |
Add-AXEnterprisePortalClaimsAuthenticationProvider | Microsoft.Dynamics.Administration.dll |
Add-AXSecurityRoleMember | Microsoft.Dynamics.Administration.dll |
Add-AXSharepointClaimsAuthenticationProvider | Microsoft.Dynamics.Administration.dll |
Disable-AXUser | Microsoft.Dynamics.Administration.dll |
Get-AXSecurityRole | Microsoft.Dynamics.Administration.dll |
Get-AXSecurityRoleInfo | Microsoft.Dynamics.Administration.dll |
Get-AXSecurityRoleMember | Microsoft.Dynamics.Administration.dll |
Get-AXUser | Microsoft.Dynamics.Administration.dll |
New-AXClaimsAwareEnterprisePortalServer | Microsoft.Dynamics.Administration.dll |
New-AXSecurityRole | Microsoft.Dynamics.Administration.dll |
New-AXUser | Microsoft.Dynamics.Administration.dll |
Remove-AXEnterprisePortalClaimsAuthenticationProvider | Microsoft.Dynamics.Administration.dll |
Remove-AXSecurityRole | Microsoft.Dynamics.Administration.dll |
Remove-AXSharepointClaimsAuthenticationProvider | Microsoft.Dynamics.Administration.dll |
Add-AXReportServerConfiguration | Microsoft.Dynamics.AX.Framework.Management.dll |
Get-AXAOS | Microsoft.Dynamics.AX.Framework.Management.dll |
Get-AXReport | Microsoft.Dynamics.AX.Framework.Management.dll |
Get-AXReportDataSource | Microsoft.Dynamics.AX.Framework.Management.dll |
Get-AXReportServerConfiguration | Microsoft.Dynamics.AX.Framework.Management.dll |
Publish-AXAssembly | Microsoft.Dynamics.AX.Framework.Management.dll |
Publish-AXReport | Microsoft.Dynamics.AX.Framework.Management.dll |
Remove-AXReportServerConfiguration | Microsoft.Dynamics.AX.Framework.Management.dll |
Set-AXReportDataSource | Microsoft.Dynamics.AX.Framework.Management.dll |
Set-AXReportServerConfiguration | Microsoft.Dynamics.AX.Framework.Management.dll |
Test-AXReportServerConfiguration | Microsoft.Dynamics.AX.Framework.Management.dll |
Konkrétně jsem použil tento skript:
Get-Command *ax* -CommandType "Cmdlet" | Select-Object Name,@{Name="Assembly"; Expression={Split-Path $_.DLL -Leaf}} | Sort-Object Assembly,Name
Nyní je zjevné, proč se tato sestavené importují při spuštění Management Shellu.
S tím souvisí další problém: Pokud svůj PowerShell kód uložíte do souboru (.ps1) a spustíte, použije se normální PowerShell, bez výše zmíněných sestavení. Volání AX cmdletů pak pochopitelně selže. Nejjednodušším řešením je spustit import stejným způsobem jako to dělá AX2012 Management Shell – stačí přidat následující příkaz na začátek vašeho skriptu:
. "C:\Program Files\Microsoft Dynamics AX\ManagementUtilities\Microsoft.Dynamics.ManagementUtilities.ps1"
Teď tedy známe dostupné příkazy, ale stále nevíme, jak je použít. A od toho je… nápověda. Prostě zavolejte Get-Help
a název nějakého cmdletu. Například:
Get-Help Move-AXModel #nebo také třeba Move-AXModel -?
zobrazí takovouto nápovědu:
NAME Move-AXModel SYNOPSIS Moves the content from one model in the Microsoft Dynamics AX model store to another model in the same layer. SYNTAX Move-AXModel [-TargetModel] [[-Config] ] [-Confirm] [-WhatIf] [] Move-AXModel [-TargetModel] [[-Database] ] [[-Server] ] [-Confirm] [-WhatIf] [] Move-AXModel [-Model] [-TargetModel] [-Confirm] [-WhatIf] [] Move-AXModel [-ManifestFile] [-TargetModel] [-Confirm] [-WhatIf] [] DESCRIPTION The Move-AXModel cmdlet enables you to move the content from one model in the Microsoft Dynamics AX model store to another model in the same layer. RELATED LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=217565 New-AXModel REMARKS To see the examples, type: "get-help Move-AXModel -examples". For more information, type: "get-help Move-AXModel -detailed". For technical information, type: "get-help Move-AXModel -full".
Všimněte si také dalších voleb v sekci Remarks, např. get-help Move-AXModel -detailed
.
To je v zásadě vše, co potřebujete vědět o cmdletech pro Dynamics AX 2012. Nicméně používání PowerShellu jako takového je samozřejmě podstatně širší téma – v případě zájmu můžete začít třeba zde.