0

以下のコードを実行してWebサーバーの値を取得すると、このエラーが発生します。

Webサーバー自体の設定を変更することを含むいくつかの可能な解決策を読みましたが、サーバーを所有していないため、これは私にとってオプションではありません。

エラー

「1」引数を指定して「DownloadString」を呼び出す際の例外:「サーバーがプロトコル違反をコミットしました。Section= ResponseStatusLine」C:\ get.ps1:28 char:60 + $ ramPage =(New-ObjectSystem.Net。 WebClient).DownloadString <<<<( "http://" + $ server + "/ RAM /" + $ evalRAMStars)+ CategoryInfo:NotSpecified:(:) []、MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException

Powershellコード

Function Get-Performance(){
$CPU = Get-WmiObject win32_processor | Measure-Object -property LoadPercentage -Average | Select Average

$SystemInfo = Get-WmiObject -Class Win32_OperatingSystem | Select-Object Name, TotalVisibleMemorySize, FreePhysicalMemory
$perRam = (($SystemInfo.FreePhysicalMemory/1MB) / ($systeminfo.totalvisiblememorysize/1MB)) * 100
$perRam = 100 - $perRam

Write-host ("CPU:  " + $CPU.Average + "%")
Write-host ("Ram:  " + $perRam + "%")

$CPUStars = $CPU.Average / 10
$RAMStars = $perRam /10

if($CPUStars -lt 1){$CPUStars = 1}

Write-host ("{0:N0}" -f $CPUStars)
Write-host ("{0:N0}" -f $RAMStars)

$evalCPUStars = "{0:N0}" -f $CPUStars
$evalRAMStars = "{0:N0}" -f $RAMStars

$server = "10.0.0.188"

#this will get our page for later
$cpuPage = (New-Object System.Net.WebClient).DownloadString("http://" + $server + "/CPU/" + $evalCPUStars)
$ramPage = (New-Object System.Net.WebClient).DownloadString("http://" + $server + "/RAM/" + $evalRAMStars)
Write-host("http://" + $server + "/CPU/" + $evalCPUStars)
Write-host("http://" + $server + "/RAM/" + $evalRAMStars)
}

While($x -ne 0)
{
    Get-Performance
    Start-Sleep -s 10   #this will run the powershell script every 10 seconds.
}
4

1 に答える 1

0

$ evalRAMStarsの値が原因で、安全でないヘッダー解析によってメッセージがブロックされている可能性があります。その値が有効であることを確認してください。それ以外の場合は、サーバーがプロトコル違反をコミットしたを参照してください。その他のソリューションについては、Section=ResponseStatusLineエラー。

于 2012-09-20T13:26:06.970 に答える