TCP烟囱命令通过Powershell

时间:2013-04-09 13:10:43

标签: powershell powershell-v2.0 powershell-v3.0

我有以下情况,我一直试图开始工作,但现在不能。我希望它能够通过并获得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

然后,如果我运行以下来获得例如“Chimney Offload State”并检查它是否设置为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!!!"
}

2 个答案:

答案 0 :(得分: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')
{
   ...
}

答案 1 :(得分:0)

得到它......它是在声明中添加-match ......

if ($netsh -MATCH 'Chimney Offload State               : disabled')