Public/New-TEApiInstantTest.ps1
|
function New-TEApiInstantTest { <# .SYNOPSIS Function for running instant tests on TE platform .DESCRIPTION Instant test function. Function will return a json object of the test results. .EXAMPLE New-TEApiInstantTest .PARAMETER NetPing Run a Ping test, takes no value. Additional Parameters are (agentId, server, port, pingType) .PARAMETER NetPath Run a Path-Visualization test, takes no value. Additional Parameters are (agentId, server, port, pingType) .PARAMETER NetTCP Run a TCP Connect Test, takes no value. Additional Parameters are (agentId, server, port) .PARAMETER NetBw Run a Bandwidth test, takes no value. Additional Parameters are (agentId, server, port, pingType) .PARAMETER WebHttp Run a HTTP server test, takes no value. Additional required Parameters are (agentId, url) optional parameters are (username, password useNtlm, postBody, verifySSLCertificate, sslVersionId, headers) .PARAMETER agentId Agent that will run the test, can be pulled from the /agents api endpoint .PARAMETER server Target for test .PARAMETER port If ping type is TCP the port to use for the target .PARAMETER pingType ICMP or TCP .PARAMETER url target for test .PARAMETER domain Domain target for DNS test .PARAMETER type DNS record type for DNS tests .PARAMETER testId testId for transaction test cal be pulled from /tests endpoint .PARAMETER username username for basic or NTLM authentication .PARAMETER pw password for basic or NTLM authentication .PARAMETER useNtlm 1 to user NTLM, default is 0 Must be set to enable username/password .PARAMETER postBody include this data when using a POST request method .PARAMETER verifySslCertificate 0 or 1. Use 0 when a site is secured with a self-signed certificate. Default is 1. .PARAMETER sslVersionId [0|1|3] - set to the appropriate value .PARAMETER headers (array of name/value pairs) (ie, User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)) #> [CmdletBinding(DefaultParameterSetName = 'NoParam')] Param( [Parameter(ParameterSetName="NetPing", Mandatory=$true)] [switch]$NetPing, [Parameter(ParameterSetName="NetPath", Mandatory=$true)] [switch]$NetPath, [Parameter(ParameterSetName="NetTCP", Mandatory=$true)] [switch]$NetTCP, [Parameter(ParameterSetName="NetBw", Mandatory=$true)] [switch]$NetBW, [Parameter(ParameterSetName="WebHttp", Mandatory=$true)] [switch]$WebHttp, [Parameter(ParameterSetName="WebPage", Mandatory=$true)] [switch]$WebPage, [Parameter(ParameterSetName="WebTrans", Mandatory=$true)] [switch]$WebTrans, [Parameter(ParameterSetName="DnsTrace", Mandatory=$true)] [switch]$DnsTrace, [Parameter(ParameterSetName="DnsServer", Mandatory=$true)] [switch]$DnsServer, [Parameter(ParameterSetName="DnsServer")] [validateset('IN','CH')] [string]$queryClass, [Parameter(ParameterSetName="DnsServer")] [switch]$recursiveQueries, [Parameter(ParameterSetName="NetPing", Mandatory=$true)] [Parameter(ParameterSetName="NetPath", Mandatory=$true)] [Parameter(ParameterSetName="NetTCP", Mandatory=$true)] [Parameter(ParameterSetName="NetBw", Mandatory=$true)] [Parameter(ParameterSetName="WebHttp", Mandatory=$true)] [Parameter(ParameterSetName="WebPage", Mandatory=$true)] [Parameter(ParameterSetName="WebTrans", Mandatory=$true)] [Parameter(ParameterSetName="DnsTrace", Mandatory=$true)] [Parameter(ParameterSetName="DnsServer", Mandatory=$true)] [int]$agentId, [Parameter(ParameterSetName="NetPing", Mandatory=$true)] [Parameter(ParameterSetName="NetPath", Mandatory=$true)] [Parameter(ParameterSetName="NetTCP", Mandatory=$true)] [Parameter(ParameterSetName="NetBw", Mandatory=$true)] [Parameter(ParameterSetName="DnsServer", Mandatory=$true)] [string]$server, [Parameter(ParameterSetName="NetPing")] [Parameter(ParameterSetName="NetPath")] [Parameter(ParameterSetName="NetTCP", Mandatory=$true)] [Parameter(ParameterSetName="NetBw")] [int]$port, [Parameter(ParameterSetName="NetPing", Mandatory=$true)] [Parameter(ParameterSetName="NetPath", Mandatory=$true)] [Parameter(ParameterSetName="NetBw", Mandatory=$true)] [validateset('TCP','ICMP')] [string]$pingType, [Parameter(ParameterSetName="WebHttp", Mandatory=$true)] [Parameter(ParameterSetName="WebPage", Mandatory=$true)] [string]$url, [Parameter(ParameterSetName="DnsTrace", Mandatory=$true)] [Parameter(ParameterSetName="DnsServer", Mandatory=$true)] [string]$domain, [Parameter(ParameterSetName="DnsTrace", Mandatory=$true)] [Parameter(ParameterSetName="DnsServer", Mandatory=$true)] [validateset('A','AAAA','ANY','CNAME','DNSKEY','DS','MX','NS','NSE','NULL','PTR','RRSIG','SOA','TXT')] [string]$type, [Parameter(ParameterSetName="WebTrans", Mandatory=$true)] [int]$testId, [Parameter(ParameterSetName="WebHttp")] [string]$username, [Parameter(ParameterSetName="WebHttp")] [string]$pw, [Parameter(ParameterSetName="WebHttp")] [bool]$useNtlm, [Parameter(ParameterSetName="WebHttp")] [string]$postBody, [Parameter(ParameterSetName="WebHttp")] [bool]$verifySslCertificate, [Parameter(ParameterSetName="WebHttp")] [ValidateSet(0,1,3)] [int]$sslVersionId, [Parameter(ParameterSetName="WebHttp")] [string[]]$headers ) Begin{ if ($PSCmdlet.ParameterSetName -eq 'NoParam') { Write-Output "You must select a test type, get-help New-TEApiInstantTest" Break } } Process{ $urlComponents $body = @{} if ($pingType -eq 'TCP' -and (-not ($port))) { $body.port = Read-Host "TCP Port" } switch ($PSBoundParameters.keys) { 'NetPing' {$urlComponents = ('instant', 'net', 'ping')} 'NetPath' {$urlComponents = ('instant', 'net', 'path-vis')} 'NetTCP' {$urlComponents = ('instant', 'net', 'tcp-connect')} 'NetBw' {$urlComponents = ('instant', 'net', 'bandwidth')} 'WebHttp' {$urlComponents = ('instant', 'web', 'http-server')} 'WebPage' {$urlComponents = ('instant', 'web', 'page-load')} 'WebTrans' {$urlComponents = ('instant', 'web', 'transactions')} 'DnsTrace' {$urlComponents = ('instant', 'dns', 'trace')} 'DnsServer' {$urlComponents = ('instant', 'dns', 'server')} } switch ($PSBoundParameters.keys) { 'agentId' { $body.agentId = $agentId} 'server' { $body.server = $server} 'port' { $body.port = $port} 'pingType' { $body.pingType = $pingType} 'url' { $body.url = $url} 'domain' { $body.domain = $domain} 'type' { $body.type = $type} 'testId' { $body.testId = $testId} 'username' { $body.username = $username} 'pw' { $body.password = $pw} 'useNtlm' { $body.useNtlm = $useNtlm} 'postBody' { $body.postBody = $postBody} 'verifySslCertificate' { $body.verifySslCertificate = $verifySslCertificate} 'sslVersionId' { $body.sslVersionId = $sslVersionId} 'headers' { $body.headers = $headers} 'queryClass' { $body.queryClass = $queryClass} 'recursiveQueries' { $body.recursiveQueries = $true} } $jsonBody = $body | ConvertTo-Json $results = Send-TEApi -urlComponents $urlComponents -method post -body $jsonbody if($results.errorMessage) { Write-Output $results.errorMessage Break } switch ($PSBoundParameters.keys) { 'NetPing' {Write-Output $results.net.ping} 'NetPath' {Write-Output $results.net.pathvis} 'NetTCP' {Write-Output $results.net | select-object tcpConnect} 'NetBw' {Write-Output $results.net.metrics} 'WebHttp' {Write-Output $results.web.httpServer} 'WebPage' {Write-Output $results.web.pageLoad} 'WebTrans' {Write-Output $results.web.transaction} 'DnsServer' {Write-Output $results.dns.server} 'DnsTrace' {Write-Output $results.dns.trace} } } End{ } } |