这里是这种情况:我有一个使用模块 ShowUI 的 Powerhsell 脚本。我使用此模块制作 Button 以将 VM 与 RDP 连接。在我的脚本中,我必须测试计算机 TS 服务并返回颜色 + 句子。我在“While”中使用此功能来测试所有(5)台计算机(这意味着刷新 5 个按钮状态):
function Get-VM_RDP_State { param ( [string]$var )
$RDP_State = Get-Service -ComputerName $var -Name TermService
if ( $? -eq 0 ) {
$Color_return = "Red"
$State_return = "Error."
}
elseif ( $RDP_State.Status -eq "Running" ) {
$Color_return = "Green"
$State_return = "You can Connect."
}
else {
$Color_return = "Orange"
$State_return = "Wait..."
}
return $Color_return , $State_return
}
除了一种情况(第一种情况)外,一切正常:如果一台计算机未启动或崩溃,“Get-Service”等待很长一段时间,然后再返回一个错误:这会使我的 ShowUI 窗口崩溃。
我在 ShowUI 的“窗口”中调用此函数
On_Loaded = {
Register-PowerShellCommand -ScriptBlock {
Get-ParentControl $VM_List_Used
$j = 0
While ( $VM_List_Used[0,$j] ) {
$VM_Name_temp = $VM_List_Used[0,$j]
$VM_IP = $VM_List_Used[1,$j]
$VM_Circle_temp = "Circle_" + "$VM_Name_temp"
$VM_Text_temp = "Text_" + "$VM_Name_temp"
$result = Get-VM_RDP_State($VM_IP_temp)
$Circle_Color = $Window | Get-ChildControl $VM_Circle_temp
$Circle_Color.Fill = $result[0]
$Text_Content = $Window | Get-ChildControl $VM_Text_temp
$Text_Content.text = $result[1]
$j++
}
}
} -Run -In "0:0:2.0"
我怎样才能在我的脚本中写一些我不想等待超过几毫秒才能得到 get-service(或任何其他解决方案!)的回复