1

まだPowershellを学ぼうとしていて、私が書いた他のスクリプトで動作するので意味をなさない単純なものに問題があるので、何か愚かなものが欠けているに違いありません. 基本的に、Nic が有効であるが何にも接続されていないかどうかを判断する必要があるため、別のコマンドを追加して無効にすることができます。すでに無効になっている場合は、True を出力する必要があります。値 .netconnectionstatus が 0 として戻ってくるので、出力を再確認するためだけに $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-objectscriptblockの外側では空白です。したがって、結果として$falseが得られます。

于 2012-07-30T10:32:07.210 に答える