Public/get-alAuditInfo.ps1

function Get-ALAuditInfo {
  <#
.SYNOPSIS
  Gets audit information
.DESCRIPTION
  Gets System Settings
.PARAMETER websession
  Existing Webrequest session for ELM Appliance
.PARAMETER entitytype
  Type of log to pull
.PARAMETER ID
  ID of entity to pull audit logs
.EXAMPLE
  Get-ALAuditInfo -websession $websession -entitytype OsLayer -id 753664
.EXAMPLE
  Get-ALAuditInfo -websession $websession -entitytype ManagementAppliance
#>

  [cmdletbinding()]
  Param(
    [Parameter(Mandatory = $true)]$websession,
    [Parameter(Mandatory = $true)][ValidateSet("OsLayer", "PlatformLayer", "AppLayer", "Image", "ManagementAppliance")][string]$entitytype,
    [Parameter(Mandatory = $false)][string]$id
  )
  Begin {
    Write-Verbose "BEGIN: $($MyInvocation.MyCommand)"
    Test-ALWebsession -WebSession $websession
    if ($entitytype -eq "ManagementAppliance") {
      $id = "32768" #appliance ID
    }

    if ([string]::IsNullOrWhiteSpace($id)) {
      throw "Entity ID for $entitytype audit log required"
    }

  }
  Process {
    [xml]$xml = @"
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <QueryAuditLog xmlns="http://www.unidesk.com/">
      <query>
        <Start>0</Start>
        <PageSize>250</PageSize>
        <SortBy>DateLastModified</SortBy>
        <QueryTotalCount>true</QueryTotalCount>
        <EntityType>$entitytype</EntityType>
        <EntityId>$id</EntityId>
      </query>
    </QueryAuditLog>
  </s:Body>
</s:Envelope>
"@

    Write-Verbose $xml
    $headers = @{
      SOAPAction     = "http://www.unidesk.com/QueryAuditLog";
      "Content-Type" = "text/xml; charset=utf-8";
      UNIDESK_TOKEN  = $websession.token;
    }
    $url = "https://" + $websession.aplip + "/Unidesk.Web/API.asmx"
    $return = Invoke-WebRequest -Uri $url -Method Post -Body $xml -Headers $headers -WebSession $websession
    [xml]$obj = $return.Content

    if ($obj.Envelope.Body.QueryAuditLogResponse.QueryAuditLogResult.Error) {
      throw $obj.Envelope.Body.QueryAuditLogResponse.QueryAuditLogResult.Error.message
    }
    else {
      return $obj.Envelope.Body.QueryAuditLogResponse.QueryAuditLogResult.items
    }
  }
  end { Write-Verbose "END: $($MyInvocation.MyCommand)" }
}