在PowerShell脚本中,如果网络连接类型不是“ DomainAuthenticated”,我需要运行一些命令。
目标不是手动更改连接类型,而是运行一组命令。
我发现了约Get-NetConnectionProfile
,但找不到如何解析其输出的信息:
Name : MyName
InterfaceAlias : vEthernet (Port1)
InterfaceIndex : 19
NetworkCategory : DomainAuthenticated
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic
我需要从NetworkCategory
行中获取类型,以便测试其内容并运行命令。
答案 0 :(得分:3)
您可以通过几种方法从Powershell对象获取单个属性值,但最简单的方法是将输出通过管道传递到Select
cmdlet:
PS C:\WINDOWS\system32> Get-NetConnectionProfile | Select -ExpandProperty NetworkCategory
Private
Public
我有两个条目,因为我有两个网络适配器。这完全取决于您要对输出执行的操作,但是这样可能会有所帮助:
Get-NetConnectionProfile | Select -ExpandProperty NetworkCategory | %{ if($_ -eq "DomainAuthenticated") { Write-Host "Replace Write-Host with what you want to do" } }
%
是“ for each”的缩写。 Select
是Select-Object
的简写。
这是Powershell中功能和过程样式脚本的一个示例。但是,您也许可以将输出直接通过管道传递到另一个cmdlet,而忽略速记-它确实取决于您的用例。
答案 1 :(得分:0)
或者,如果将Get-NetConnectionProfile放入变量中,则只需调用$ variable.NetworkCategory。像这样:
PS C:\Windows\system32> $ncp = Get-NetConnectionProfile
PS C:\Windows\system32> $ncp.NetworkCategory
DomainAuthenticated