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! }