Here is a quick script on how to login to ServiceMesh AgilityPlatform. Never heard of the product? don’t bother. It works nevertheless …
function Enter-AgilityPlatform {
PARAM (
[Parameter(Mandatory = $false, Position = 0)]
[Alias('Uri')]
[Uri] $UriBase = 'https://dfch.biz:8443/agility/'
,
[Parameter(Mandatory = $true)]
[PSCredential] $Credential
) # PARAM
$OutputParameter = $null;
try {
[Uri] $UriLogin = ("{0}j_spring_security_check" -f $UriBase.AbsoluteUri)
$Body = 'product={0}&j%5Fusername={1}&j%5Fpassword={2}'
-f 'AgilityPlatform', [System.Web.HttpUtility]::UrlEncode($cred.Username),
[System.Web.HttpUtility]::UrlEncode($cred.GetNetworkCredential().Password);
$r = Invoke-RestMethod -Uri $UriLogin -Method POST -SessionVariable s
-Body $Body -ContentType 'application/x-www-form-urlencoded';
$r = Invoke-RestMethod -Uri ("{0}connection" -f $Uri.AbsoluteUri ) -WebSession $s;
if($r) {
$OutputParameter = $s;
} # if
} # try
catch {
Write-Error ("Login to '{0}' with Username '{1}' FAILED [{2}]."
-f $UriBase, $cred.Username, $_)
} # catch
finally {
# Cleanup
# N/A
} # finally
return $OutputParameter;
} # function
Subsequent calls to AgilityPlatform are then execeuted like this (eg list all projects on the platform):
# User to login
$cred = Get-Credential "UberAdmin";
# Specify base URI
[Uri] $UriBase = 'https://example.com/agility/'
# Select API version
[Uri] $Uri = "{0}api/current/" -f $UriBase.AbsoluteUri;
$s = Enter-AgilityPlatform -UriBase $UriBase -Credential $cred;
$r = Invoke-RestMethod -Uri ("{0}project" -f $Uri.AbsoluteUri ) -WebSession $s;
$r.Linklist.link
An easy way to check if the login session is still valid is to issue the following request:
$r = Invoke-RestMethod -Uri ("{0}connection" -f $Uri.AbsoluteUri ) -WebSession $s;
$r.Linklist.ns1
You should receive a namespace in ‘ns1’ like ‘http://servicemesh.com/agility/api’ or an exception if the login session is already expired.
If you happen to get an exception upon using UrlEncode() make sure you issue the following statement in your PowerShell session first:
Add-Type -AssemblyName System.Web;
