První kroky s AX2012 Management Shell

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\60\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.