我希望我的每个数字运算节点定期更新我的Web服务器上运行的MATLAB实例的数量,因此我试图弄清楚如何使用PowerShell v2构建HTTP Post请求。由于技术原因,我将无法使用Powershell v3,因此我无法使用Invoke-WebRequest(aka 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实例的数量)。我试过谷歌搜索它,但到目前为止还没有找到任何好的消息来源。不知道为什么,因为这似乎应该是微不足道的。
提前致谢!