命令透過 cmd 可以正常執行,但不能透過 PowerShell

命令透過 cmd 可以正常執行,但不能透過 PowerShell

該命令不起作用:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways,allowoutbound

該命令的工作原理:

netsh advfirewall set allprofiles state on

我嘗試過使用呼叫命令和&,但我無法讓它工作。當我在 PS 中運行上述命令時,它告訴我:

提供的參數數量無效。檢查幫助以獲取正確的語法。

答案1

逗號是 PowerShell 的特殊字元。在您的情況下,它被解釋為二進制數組運算符。它會建立包含兩個元素blockinboundalways和 的陣列allowoutbound。當陣列傳遞給本機應用程式時,v5 以下的 PowerShell 將以空格分隔陣列元素。傳遞給的結果命令列netsh如下:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways allowoutbound

這不是你想要的。您必須轉義逗號或將其括在引號中才能按字面解釋:

netsh advfirewall set allprofiles firewallpolicy blockinboundalways`,allowoutbound
netsh advfirewall set allprofiles firewallpolicy 'blockinboundalways,allowoutbound'

相關內容