我有一个非常简单的问题:
我目前正在通过批处理脚本将特定的网络适配器设置为私有,如下所示:
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-Noun
cmdlet。
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}