このコマンドは機能しません:
netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound
このコマンドは次のように機能します:
netsh advfirewall set allprofiles state on
私はinvoke-commandと&を使ってみましたが、うまくいきませんでした。上記のコマンドをPSで実行すると、次のように表示されます。
指定された引数の数が無効です。正しい構文についてはヘルプを確認してください。
答え1
カンマは PowerShell の特殊文字です。この場合、バイナリ配列演算子として解釈されます。2 つの要素を持つ配列を作成します。PowerShell バージョン 5 より前のバージョンでblockinboundalways
は、allowoutbound
配列がネイティブ アプリケーションに渡されるときに、配列要素がスペースで区切られます。渡される結果のコマンド ラインはnetsh
次のようになります。
netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound
これは望んでいることではありません。文字どおりに解釈するには、カンマをエスケープするか、引用符で囲む必要があります。
netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'