create powershell script with next text:
clear
Function PostWebRequest{
param(
[String]$url,
[String]$data,
[int]$timeout=300000)
$buffer = [System.Text.Encoding]::UTF8.GetBytes($data)
[System.Net.HttpWebRequest] $webRequest = [System.Net.WebRequest]::Create($url)
$webRequest.Timeout = $timeout
$webRequest.Method = "POST"
$webRequest.ContentType = "application/x-www-form-urlencoded"
$webRequest.ContentLength = $buffer.Length;
$requestStream = $webRequest.GetRequestStream()
$requestStream.Write($buffer, 0, $buffer.Length)
$requestStream.Flush()
$requestStream.Close()
[System.Net.HttpWebResponse] $webResponse = $webRequest.GetResponse()
$streamReader = New-Object System.IO.StreamReader($webResponse.GetResponseStream())
$result = $streamReader.ReadToEnd()
return $result
}
$url = "http://xxxxxxxxx/index.php/admin/remotecontrol"
function survey-get-session{
param([string]$url)
$data = "
get_session_key
admin
xxxxxxxxx
"
[xml]$res_xml = [xml](PostWebRequest $url $data)
$session_key = $res_xml.methodResponse.params.param.value.string."#cdata-section"
if($session_key -ne $null){
return $session_key
}
else{
$Host.get_UI().WriteErrorLine("can't get session!")
return $null
}
}
function survey-release-session{
param(
[string]$url,
[string]$session
)
$data = "
release_session_key
"+$session+"
"
[xml]$res_xml = [xml](PostWebRequest $url $data)
$closed = $res_xml.methodResponse.params.param.value.string."#cdata-section"
if($closed -ne $null){
return $closed
}
else{
$Host.get_UI().WriteErrorLine("can't close session!")
return $null
}
}
function survey-list-surveys{
param(
[string]$url,
[string]$session,
[string]$user=$null
)
$data = "
list_surveys
"+$session+"
"+$user+"
"
$objs=@()
$props = @{sid = ""; surveyls_title = ""; startdate = ""; expires = ""; active = ""}
$obj = New-Object -TypeName PSObject -Property $props
[xml]$res_xml = [xml](PostWebRequest $url $data)
$list = $res_xml.methodResponse.params.param.value.array.data
foreach($val in $list.value){
$struct = $val.struct
$obj_cur = $obj.PSObject.Copy()
foreach($mem in $struct.member){
$param_name = $mem.name.FirstChild.value
$param_value = $mem.value.FirstChild.FirstChild.value
$obj_cur.($param_name) = $param_value
}
$objs+=$obj_cur
}
if($objs -ne $null){
return $objs
}
else{
$Host.get_UI().WriteErrorLine("can't get list of surveys!")
return $null
}
}
function survey-add{
param(
[string]$url,
[string]$session,
[string]$title,
[string]$lang="ru",
[string]$fmt="G"
)
[long]$id = Random(999999)
$data = "
add_survey
"+$session+"
"+$id+"
"+$title+"
"+$lang+"
"+$fmt+"
"
Write-Host (PostWebRequest $url $data)
}
$session_key = (survey-get-session $url) # work!
if($session_key -ne $null){
Write-Host ("session = "+$session_key)
(survey-list-surveys $url $session_key) | ft –AutoSize # work!
Write-Host (survey-add $url $session_key "Test survey from RPC") # not work!
Write-Host (survey-release-session $url $session_key) # work!
}