Я хочу, чтобы каждый из моих узлов, пересекающих число, периодически обновлял мой веб-сервер в соответствии с количеством запущенных им экземпляров 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). Я пытался погуглить, но пока не нашел хороших источников. Не знаю почему, потому что это кажется тривиальным.
Заранее спасибо!