[X++] class AxaptaUserManager, PowerShell and BusinessConnector

Today I stumpled on a little inconspicuous class called AxaptaUserManager.
Taking a closer look to the methods, there are some useful ones.
Axapta User manager methods

Now to combine the class with some useful functionallity, for example we can get all security roles assigned to the current user. To make it even more interesting for you, I did that using PowerShell and the Business Connector!

#Created by Robin Kretzschmar, 15.07.2015

#Put the path to your config file here, if you want to use one:
$configFile = "\\NETWORKPATH\TO\CONFIG\My_Config_File.axc"
$array = New-Object System.Collections.ArrayList
Add-Type -Path "C:\Program Files\Microsoft Dynamics AX\60\BusinessConnector\Bin\Microsoft.Dynamics.BusinessConnectorNet.dll"

Function AxLogoff

Function AxLogon
        $script:ax = new-object Microsoft.Dynamics.BusinessConnectorNet.Axapta
        #Either use it without parameters to use your current client config:
        #or with a config file to use with any other AX instance:
        $ax.Logon('','','', $configFile)
        throw 'Logging to AX failed.'

Function GetSystemData
    #Some base data from the system in case you want to print them out also:
    $XApplication = $ax.CreateAxaptaObject("xApplication")
    $xSession = $ax.CreateAxaptaObject("XSession")   
    Write-Host "BuildNo: " $XApplication.Call("buildNo")
    Write-Host "AOSName: " $xSession.call("AOSName")   
    Write-Host "AOS Port " $ax.CallStaticClassMethod("Session", "getAOSPort")
    Write-Host "DB-Schema: " $ax.CallStaticClassMethod("xSession", "getDbSchema")
    Write-Host "Session Login Date: " $xSession.call("loginDateTime")  
    $script:curUserId = $xSession.call("userId")
    Write-Host "UserId: " $curUserId  
    Write-Host "Computer Name: " $ax.CallStaticClassMethod("xGlobal", "computerName")

Function GetUserRoles
    $script:array = $ax.CallStaticClassMethod("AxaptaUserManager", "getAXUserRoles")

Function PrintRoles
    Write-Host "Roles for user'" $curUserId "':"
    Write-Host ($array | Format-Table | Out-String)

#Execute functions


The output will be:
Sorry but I had to mask some data.

Enjoy playing with PowerShell, BusinessConnector and AxaptaUserManager.

I'm always happy to read some cool snippets in the comments!