如何从批处理或 powershell 将所有网络适配器设置为私有?

如何从批处理或 powershell 将所有网络适配器设置为私有?

我有一个非常简单的问题:

我目前正在通过批处理脚本将特定的网络适配器设置为私有,如下所示:

powershell -command Set-NetConnectionProfile -Name "Network" -NetworkCategory Private

在不知道所有网络适配器的名称或任何相关信息的情况下,我怎样才能对所有网络适配器执行此操作?

答案1

这个怎么样:

Get-NetConnectionProfile -InterfaceAlias "Network" | Set-NetConnectionProfile -NetworkCategory Private -Confirm:$false -PassThru

通常 (几乎每次),有 的地方Set-*就有Get-*。PowerShell cmdlet 输出对象可以链接(管道) 到其对应的Verb-Nouncmdlet。

  • Get-NetConnectionProfile在这种情况下,返回具有以下接口名称的连接配置文件:“网络”
  • Set-ConnectionProfile。当通过管道传输到此 cmdlet 时,您可以从中获取整个对象Get-NetConnectionProfile并对其进行修改。即:将其设置为私人的

答案2

好吧,我终于找到了办法。我不知道如何迭代名称,但我找到了一种迭代 InterfaceAliases 的方法。我不得不相应地调整 Set-NetConnectionProfile 调用,但现在它运行得很好:

for /F "skip=3 tokens=1,2,3* delims= " %%G in ('netsh interface show interface') DO (
    echo "Setting %%J to private..."
    powershell -command Set-NetConnectionProfile -InterfaceAlias "Network" -NetworkCategory Private
)

查看接口循环来自这里:https://stackoverflow.com/a/42654438/2879085

答案3

powershell -c "get-netconnectionprofile | foreach{Set-netconnectionprofile -InterfaceIndex $_.InterfaceIndex -NetworkCategory Private}"

答案4

希望这可以帮助:

(Get-ChildItem -Path "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles").Name | foreach{REG ADD "$_" /v "Category" /t REG_DWORD /d 1 /f}

相关内容