Проблема построения пост-запроса в PowerShell v2 - PullRequest
0 голосов
/ 03 мая 2018

Я хочу, чтобы каждый из моих узлов, пересекающих число, периодически обновлял мой веб-сервер в соответствии с количеством запущенных им экземпляров MATLAB, поэтому я пытаюсь выяснить, как создать запрос HTTP Post с помощью PowerShell v2. По техническим причинам я НЕ смогу использовать Powershell v3, поэтому я не могу использовать Invoke-WebRequest (он же curl). Я нашел скрипт, который должен работать с v2, но я не уверен, как поместить тело моего запроса в правильный формат.

Вот мой скрипт PowerShell (код был заимствован из https://gallery.technet.microsoft.com/scriptcenter/powershell-script-to-send-8955b12e):

busy = (tasklist | findstr "MATLAB.exe" | measure).Count #Get number of MATLAB instances
postParams = @{busy=$busy}
$endPointURL = "http://10.1.10.153:8888/receiveStatus.php" 
$webRequest = [System.Net.HttpWebRequest]::Create($endPointURL) 
Write-Host "Sending POST Request"+$endPointURL 
$webRequest.Timeout = 60000; 
$webRequest.ContentType="application/xml"; 
$webRequest.Method= 'POST'; 
$requestBody = $postParams
$Body = [byte[]][char[]]$requestBody;
$Stream = $webRequest.GetRequestStream();

И вот ошибка, которую я получаю:

Cannot convert the "System.Collections.Hashtable" value of type "System.Collections.Hashtable" to type "System.Char[]".
At C:\Users\boris\Desktop\050218_test3.ps1:15 char:1
+ $Body = [byte[]][char[]]$requestBody;
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : InvalidArgument: (:) [], RuntimeException
+ FullyQualifiedErrorId : ConvertToFinalInvalidCastException

Так может кто-нибудь сказать, пожалуйста, правильный формат, в котором нужно поместить тело моего запроса, чтобы это сообщение об ошибке исчезло? Буквально, я просто пытаюсь заставить это сказать что-то с эффектом {'busy':'5'} (если 5 - количество экземпляров MATLAB). Я пытался погуглить, но пока не нашел хороших источников. Не знаю почему, потому что это кажется тривиальным.

Заранее спасибо!

...