1

我有以下内容,我一直在努力工作,但目前还不能。我希望它通过并获得 netsh 命令的输出,但我只需要它来检查三个输出。

如果我只是运行它,这是命令输出:

netsh int tcp show global | where {$_ -match ': disabled'}


Receive-Side Scaling State          : disabled 
Chimney Offload State               : disabled 
Direct Cache Acess (DCA)            : disabled 
Receive Window Auto-Tuning Level    : disabled 
ECN Capability                      : disabled 
RFC 1323 Timestamps                 : disabled

现在,如果我运行以下命令以获取例如“烟囱卸载状态”并检查它是否设置为 DISABLED,那么它会失败并通过 ELSE 语句说它在不是时设置为 ENABLED...知道如何修复这个请:

代码:

clear
$netsh = netsh int tcp show global | where {$_ -match ': disabled'}

if ($netsh -eq 'Chimney Offload State               : disabled')
{
    Write-Host "TCP Chimney disabled"
}
else
{
    Write-Host "TCP Chimney is ENABLED - WRONG!!!"
}
4

2 回答 2

6

另一种方法是将结果对象化:

$pso = New-Object -TypeName PSObject

netsh int tcp show global | where {$_ -match ':'} | foreach{
    $item = $_.Split(':') -replace '\s|-|\(|\)'
    $pso | Add-Member -MemberType NoteProperty -Name $item[0] -Value $item[1]
}

if($pso.ChimneyOffloadState -eq 'disabled')
{
   ...
}
于 2013-04-09T13:34:18.020 回答
0

明白了......它是在语句中添加一个-match......

if ($netsh -MATCH 'Chimney Offload State               : disabled')
于 2013-04-09T13:13:14.717 回答