无法使文本框更新新数据

时间:2019-08-17 17:19:48

标签: winforms powershell

使用我的第一个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”时,它不会更新文本框来显示该信息。就该框中的信息而言,网络连接从未改变。无论禁用网络连接后等待多长时间,都是这种情况。

1 个答案:

答案 0 :(得分:0)

if ($wifi -like '*Connected*') { $WiFi = "(Wi-Fi)" }

对于“已连接”和“已断开连接”都是如此 并且将始终返回$WiFi = "(Wi-Fi)"