1

仍在尝试学习 Powershell 并且遇到了一些简单但没有意义的问题,因为它适用于我编写的其他脚本,所以一定缺少一些愚蠢的东西。基本上我需要确定 Nic 是否已启用但未附加到任何东西,因此我可以添加另一个命令来禁用它。如果它已经被禁用,我只需要它输出 True 。.netconnectionstatus 值返回为 0,所以我期待 -like 命令我自己使用 $disabled 只是为了仔细检查我的输出。

$disabled = gwmi win32_networkadapter | where {$_.PhysicalAdapter -eq "True"-and $_.netenabled -ne "True"}`
| % { '{0,10} {1,20}' -f $_.netenabled,$_.netconnectionstatus}
$disabled
$_.netconnectionstatus -like "0"
4

1 回答 1

1

-like 和 -match 运算符仅在字符串比较中有意义。如果您期望整数,这里 -eq 将是最好的选择,不带引号。另外 - 如果您有布尔值,则无需将其与任何东西进行比较。在这里,如果您要更改:$_.NetEnabled -ne 'False'您将获得完全相同的结果...请改用:where { $_.PhysicalAdapter -and (-not $_.NetEnabled)}。如果你决定改变它,你会因为 PS 处理字符串的方式([bool]'False' -eq $true)而对自己开枪。

另外:您的 $_ 在 foreach-object 脚本块之外是空白的。因此,您会得到 $false 的结果。

于 2012-07-30T10:32:07.210 回答