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