gpt4 book ai didi

networking - 如何在Powershell中检索Vista的网络状态(例如 “Local Only”, “Local and Internet”)

转载 作者:行者123 更新时间:2023-12-02 23:49:11 32 4
gpt4 key购买 nike

我的网卡不稳定,尤其是从休眠状态恢复后,有时会掉线。退出对应于Vista的网络状态,在通知区域中显示为“仅限本地”。是否可以通过编程方式检索这些状态值(例如“有限连接”,“仅本地”,“本地和Internet”)?

我正在编写一个powershell脚本,该脚本将轮询以查看连接是否断开,如果连接断开,则重置适配器。目前,我正在尝试通过ping我的ISP的DNS服务器来检测连接状态。但是,由于操作系统已经正确识别了这种情况,因此,如果我可以检索此值,它将更加简单。

谢谢!

最佳答案

试试这个功能:

PS> function Get-NetworkStatus {
$t = [Type]::GetTypeFromCLSID([Guid]"{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")
$networkListManager = [Activator]::CreateInstance($t)
$connections = $networkListManager.GetNetworkConnections()
function getconnectivity {
param($network)
switch ($network.GetConnectivity()) {
0x0000 { 'disconnected' }
{ $_ -band 0x0001 } { 'IPV4_NOTRAFFIC' }
{ $_ -band 0x0002 } { 'IPV6_NOTRAFFIC' }
{ $_ -band 0x0010 } { 'IPV4_SUBNET' }
{ $_ -band 0x0020 } { 'IPV4_LOCALNETWORK' }
{ $_ -band 0x0040 } { 'IPV4_INTERNET' }
{ $_ -band 0x0100 } { 'IPV6_SUBNET' }
{ $_ -band 0x0200 } { 'IPV6_LOCALNETWORK' }
{ $_ -band 0x0400 } { 'IPV6_INTERNET' }
}
}
$connections |
% {
$n = $_.GetNetwork();
$name = $n.GetName();
$category = switch($n.GetCategory()) { 0 { 'public' } 1 { 'private' } 2 { 'domain' } }
$connectivity = getConnectivity $n
new-object PsObject -property @{Name=$name; Category=$category; Connectivity=$connectivity }
}
}

PS> Get-NetworkStatus
Name Connectivity Category
---- ------------ --------
Neznámá síť {IPV4_NOTRAFFIC, IPV6_NOTRAFFIC} public
stefan {IPV6_NOTRAFFIC, IPV4_INTERNET} private

如果通过管道传输 $connections并将其从 GetNetwork()输出到 Get-Member,您会发现一些更有用的方法。

关于networking - 如何在Powershell中检索Vista的网络状态(例如 “Local Only”, “Local and Internet”),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396054/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com