如何将数据发送到网站服务?

时间:2017-12-22 03:10:46

标签: web-services powershell

我试图在PowerShell中构建一组应用程序服务器的运行状况检查系统。我有8台服务器,每台服务器运行不同的应用程序,需要运行自己的特定服务。我希望这台服务器运行一组基本命令:

$RequiredServices = "Service1","Service2"
Get-Service -Name $RequiredServices | Select-Object name,status
Test-Connection -ComputerName $DomainController

然后,我想通过XML或HTML将此信息发送到SOAP或REST等本地Web服务,因此我可以快速快速拍摄网页上的所有应用程序服务。我可以弄清楚网页部分,但我对将这些数据发送到网络服务的最佳方法感到困惑? Invoke-WebRequest

1 个答案:

答案 0 :(得分:1)

您可以将测试结果传递给请求正文中的Web服务,这里是一个调用Web服务的示例,将结果作为json传递给正文。

正文可以表示您希望的任何数据结构,下面只是一个示例。

$Body = @{
    "TestName" = $TestName
    "Results" = @(
        @{
            "ServiceName" = $ServiceName
            "Status" = $Status
        }
    )
} | ConvertTo-Json

$contentType = "application/json"
Invoke-WebRequest -TimeoutSec $TimeoutSec `
                  -Method PUT `
                  -Uri $Uri `
                  -ContentType $contentType `
                  -UseBasicParsing `
                  -Body $Body 

注意: 如果你多次呼叫休息api,你需要清理你的连接,所以你应该通过以下方式接听电话:

$ServicePoint = [System.Net.ServicePointManager]::FindServicePoint($Uri)
# Make call here
$ServicePoint.CloseConnectionGroup("") | Out-Null

有关详细信息,请参阅here

正如@Clijsters所指出的那样Invoke-RestMethod是另一种替代Invoke-WebRequest