使用我的第一个PowerShell表单。表单顶部是一个ReadOnly文本框,其中显示了正在使用其的计算机的主机名,序列号,IP地址和MAC地址。我下面有一个按钮来刷新此数据,该数据将更新以反映当前的网络连接(应该告诉您它是在WiFi,以太网还是断开连接,并相应地更新文本框)据我所知,它可以正常工作!媒体断开时除外。然后它根本不会改变,只保留相同的数据。 我正在使用Powershell Studio制作表单,但是使用使用POSH构建的表单时,我会得到相同的结果。
当使用控制台作为输出以常规PS1脚本运行此脚本时,它可以完美运行!显示IP地址和MAC地址为“已断开”。
#The form's 'Shown' Event and the Refresh Button trigger this function
$UpdateSysInfo={
$MHN = hostname
$MSN = gwmi win32_bios | Select –ExpandProperty SerialNumber
$MYIPAddress = ([System.Net.Dns]::GetHostByName($MHN).AddressList[0]).IpAddressToString
$MYIPMAC = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -ComputerName $MHN
$MYMAC = ($MYIPMAC | where { $_.IpAddress -eq $MYIPAddress }).MACAddress
$wifi = netsh interface show interface | findstr /C:"Wi-Fi" /C:"Name"
if ($wifi -like '*Connected*')
{
$WiFi = "(Wi-Fi)"
}
Else
{
$WiFi = "(Ethernet)"
}
if ($WiFi -like '*(Wi-Fi)*')
{
$MACWiFi = "(Wi-Fi)"
}
Else
{
$MACWiFi = ""
}
#If media is disconnected, then $MYIPAddress will be 127.0.0.1
if ($MYIPAddress -like '127.0.0.1')
{
$ShowIP = "DISCONNECTED"
$ShowMAC = "DISCONNECTED"
}
Else
{
$ShowIP = "$MYIPAddress $WiFi"
$ShowMAC = "$MYMAC $MACWiFi"
#Should be pretty obvious, SysInfo is the Textbox where it's showing the accumulated data here
$SysInfo.text = "Hostname: $MHN │ Serial Number: $MSN │ IP Address: $ShowIP │ MAC Address: $ShowMAC"
}
}
无错误消息。当连接到Internet时,它可以完美工作,但是当网络连接被禁用并且应该显示为“ Disconnected”时,它不会更新文本框来显示该信息。就该框中的信息而言,网络连接从未改变。无论禁用网络连接后等待多长时间,都是这种情况。
答案 0 :(得分:0)
if ($wifi -like '*Connected*')
{
$WiFi = "(Wi-Fi)"
}
对于“已连接”和“已断开连接”都是如此
并且将始终返回$WiFi = "(Wi-Fi)"