
NetBIOS を無効にしようとしており、これを SCCM 経由で複数のクライアントに対して実行する必要があります。
私はコンプライアンス設定を通じてこれを実行しようとしており、次の設定を行っています(ローカルで実行すると機能します)
発見スクリプト
$adapter=(gwmi win32_networkadapterconfiguration | where {$_.ipenabled -eq "1"})
Foreach ($nic in $adapter) {if ($adapter.TcpIPNetBiosOptions -ne "2") {[System.Environment]::Exit(1)}} [System.Environment]::Exit(0)
修復スクリプト
$adapter=(gwmi win32_networkadapterconfiguration | where {$_.ipenabled -eq "1"})
Foreach ($nic in $adapter) {
$adapter.settcpipnetbios(2)
}
したがって、スクリプトを実行すると各マシンでローカルに動作し、すでに準拠している場合はSCCMが正しい応答を返します。
しかし
レジストリ値が $adapter.TcpIPNetBiosOptions -ne "2" として返される場合、構成マネージャーで評価されたときに構成コンプライアンスに「エラー」が表示され、修復は自動的にトリガーされません。スクリプトを自分で実行すると、構成は準拠として返されます。
何か見落としているものがあるのでしょうか?
編集次のエラーが報告されています
設定検出エラー 0x80070001 関数が正しくありません。Windows
答え1
$adapter.settcpipnetbios(2)
すべきである
$nic.settcpipnetbios(2)
そうでなければ、ループの理由はありませんforeach
。