如何在PowerShell中获取网络连接类型

时间:2019-09-12 09:09:24

标签: powershell

在PowerShell脚本中,如果网络连接类型不是“ DomainAuthenticated”,我需要运行一些命令。

目标不是手动更改连接类型,而是运行一组命令。

我发现了约Get-NetConnectionProfile,但找不到如何解析其输出的信息:

Name             : MyName
InterfaceAlias   : vEthernet (Port1)
InterfaceIndex   : 19
NetworkCategory  : DomainAuthenticated
IPv4Connectivity : Internet
IPv6Connectivity : NoTraffic

我需要从NetworkCategory行中获取类型,以便测试其内容并运行命令。

2 个答案:

答案 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”的缩写。 SelectSelect-Object的简写。

这是Powershell中功能和过程样式脚本的一个示例。但是,您也许可以将输出直接通过管道传递到另一个cmdlet,而忽略速记-它确实取决于您的用例。

答案 1 :(得分:0)

或者,如果将Get-NetConnectionProfile放入变量中,则只需调用$ variable.NetworkCategory。像这样:

PS C:\Windows\system32> $ncp = Get-NetConnectionProfile
PS C:\Windows\system32> $ncp.NetworkCategory
DomainAuthenticated