There is an out-of-the-box template for Groupwise performance metrics that a client is trying to use in their environment. They use local authentication for the target webpage but, try as I might, I've been unable to figure out how to pass the variable ${credential} into the Net-Object System.Net.WebClient object. (See lines 18-20 below)
I tried inserting the following on line 19 but that fails with 'The user name or password is incorrect.'
$webClient.Credentials = new-object System.Management.Automation.PSCredential(${CREDENTIAL});
As per the script body of Windows PowerShell monitor the ${CREDENTIAL} variable will pass the username and the component will prompt for the password at run time, which SAM will then pass from the SAM credential store.
I got the option for line 19 (as above) from How to make an authenticated web request in Powershell? - Stack Overflow.
Tagging mrxinu on this one for some help!
$Error.Clear();
$server = $args[0];
$port = $args[1];
if ( !$server )
{
Write-Host "Message: Can't find ""server"" argument. Check documentation.";
exit 1;
}
if ( !$port )
{
Write-Host "Message: Can't find ""port"" argument. Check documentation.";
exit 1;
}
$tempvar = (Get-Childitem env:temp).value;
$tempfile = $tempvar + '\APM-GW-POA1' + $server + '.txt';
$downloadstring = 'http://'; + $server + ':' + $port + '/';
try {
$webClient = New-Object System.Net.WebClient;
$content = $webClient.DownloadString("$downloadstring") | out-file $tempfile;
}
catch {
Write-Host "Message: Connection error: $($Error[0])";
exit 1;
}
function getstat2([string] $path, [string] $pattern) {
$i = (get-content $path | select-string $pattern | Select-Object LineNumber | select -first 1).LineNumber;
if ($i -eq $null)
{
return -1;
}
else
{
$out = get-content $path;
$i=$i+1;
$t=$out[$i].Split("<*>");
return $t[2];
}
}
function getstat1([string] $path, [string] $pattern) {
$i = (get-content $path | select-string $pattern | Select-Object LineNumber | select -first 1).LineNumber;
if ($i -eq $null)
{
return -1;
}
else
{
$out = get-content $path;
$t=$out[$i].Split("<*>");
return $t[4];
}
}
$stat1 = getstat1 $tempfile "C/S Users";
$stat2 = getstat2 $tempfile "Application Connections";
$stat3 = getstat2 $tempfile "Physical Connections";
$stat4 = getstat2 $tempfile "Priority Queues";
$stat5 = getstat2 $tempfile "Normal Queues";
$stat6 = getstat1 $tempfile "C/S Requests";
$stat7 = getstat1 $tempfile "C/S Requests Pending";
$stat8 = getstat1 $tempfile "Users Timed Out";
$stat9 = getstat2 $tempfile "Rules Executed";
Write-Host "Statistic.Users: $stat1";
Write-Host "Statistic.Application_Connections: $stat2";
Write-Host "Statistic.Physical_Connections: $stat3";
Write-Host "Statistic.Priority_Queues: $stat4";
Write-Host "Statistic.Normal_Queues: $stat5";
Write-Host "Statistic.Requests: $stat6";
Write-Host "Statistic.Requests_Pending: $stat7";
Write-Host "Statistic.Users_Timed_Out: $stat8";
Write-Host "Statistic.Rules_Executed: $stat9";
exit 0;