我写下以下代码工作正常 - 它将每个网卡设置为启用(并等待卡片有$StatusConnected=2
)。
当我在所有服务器上将其推向生产时,我看到的问题是,将会有一些狡猾的服务器,它将无法将状态更改为2并且将永远循环以尝试将其设置为2。
任何人都知道如何在下面放一个计时器,这样如果它在30秒内没有改变2,那么移动到下一张卡?如果它还可以向我显示它失败的卡片,那将会很方便。
我是否添加了另一个Do
并添加了-gt 30
这样的计时器? - 不太清楚如何开始这样做所以任何想法都会有用 - 而且,很难测试,因为我的所有实验室服务器都可以正常启用NIC。
$listofNIcs = Get-WmiObject -Class Win32_NetworkAdapter -ComputerName . -filter "Name LIKE '%HP%' OR Name LIKE '%Broadcom%' OR NAME LIKE '%Intel%'"
$StatusConnected = $listofNIcs.NetConnectionStatus
Foreach ($disNICS in $listofNIcs)
{
Do {
$disNICS.Enable()
}
Until($StatusConnected -eq "2")
}
答案 0 :(得分:2)
我只是抓紧时间并在循环条件下进行比较。
Foreach ($disNICS in $listofNIcs)
{
$StartTime = Get-Date;
Do {
$disNICS.Enable()
}
Until(($StatusConnected -eq "2") -or (((Get-Date) - $StartTime).TotalSeconds -gt 30))
}
注意:我原来在这里使用Seconds而不是TotalSeconds。你真的想要TotalSeconds。秒只是第二个组成部分,所以如果是5小时4分13秒,则秒数为13,而TotalSeconds为18253。