userspace:json-rpc_web-request
This is an old revision of the document!
Create json-rpc web-request from within a powershell script to query the json-rpc api
$urlJSON = 'https://xxx.xxx.xxx.xxx:4447/rpc' $authUser = "[username]" $authPass = "[password]" $method = "[method]" $params = @("[param1]","[param2]") Function CallJSON($url,$object,$authUser,$authPass,$method,$params) { $cred = New-Object System.Net.NetworkCredential -ArgumentList $authUser,$authPass $bytes = [System.Text.Encoding]::ascii.GetBytes($object) $web = [System.Net.WebRequest]::Create($url) [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $web.Method = "POST" $web.ContentLength = $bytes.Length $web.ContentType = "application/json" $web.Credentials = $cred $stream = $web.GetRequestStream() $stream.Write($bytes,0,$bytes.Length) $stream.close() $reader = New-Object System.IO.Streamreader -ArgumentList $web.GetResponse().GetResponseStream() return $reader.ReadToEnd()| ConvertFrom-Json $reader.Close() } $data = (New-Object PSObject | Add-Member -PassThru NoteProperty method $method | Add-Member -PassThru NoteProperty params $params | Add-Member -PassThru NoteProperty id '1') | ConvertTo-Json -depth 3 $request = CallJSON $urlJSON $data $authUser $authPass $method $params
example: automatically assign a meta-package of default software to every new client registered to OPSI
$urlJSON = 'https://your-opsi-server-url:4447/rpc'
$authUser = "adminuser"
$authPass = "TopSecretPassword"
$method = "setProductActionRequestWithDependencies"
$params = @("hwaudit","servername.domain.tld","setup")
Function CallJSON($url,$object,$authUser,$authPass,$method,$params) {
$cred = New-Object System.Net.NetworkCredential -ArgumentList $authUser,$authPass
$bytes = [System.Text.Encoding]::ascii.GetBytes($object)
$web = [System.Net.WebRequest]::Create($url)
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$web.Method = "POST"
$web.ContentLength = $bytes.Length
$web.ContentType = "application/json"
$web.Credentials = $cred
$stream = $web.GetRequestStream()
$stream.Write($bytes,0,$bytes.Length)
$stream.close()
$reader = New-Object System.IO.Streamreader -ArgumentList $web.GetResponse().GetResponseStream()
return $reader.ReadToEnd()| ConvertFrom-Json
$reader.Close()
}
$data = (New-Object PSObject |
Add-Member -PassThru NoteProperty method $method |
Add-Member -PassThru NoteProperty params $params |
Add-Member -PassThru NoteProperty id '1') | ConvertTo-Json -depth 3
$request = CallJSON $urlJSON $data $authUser $authPass $method $params
userspace/json-rpc_web-request.1403255363.txt.gz · Last modified: (external edit)
