1
我的代码的目的是在瘦客户机上运行RDP连接(在自定义shell中)。每当RDP登录被取消或RDP连接终止时,登录窗口将再次出现。这将在任何时候向用户呈现他们的登录屏幕。Powershell:IF Statement and Timer.Elapsed
另外,因为RD Broker会维持15分钟的握手超时时间,所以我想每15分钟运行一次刷新,因为他们的会话尚未打开。所以我必须找到某种方式来检测用户是否未登录到RD主机。
该脚本运行良好。 Allthough总是对更聪明的方式感兴趣。
Start-Process C:\Windows\System32\mstsc.exe C:\Connection\Terminal-Server.RDP
$previous_Handles = 0
While(1) {
$process = Get-Process mstsc
$timer = New-Object System.Threading.Timer
$timer.Interval = 900000
$timer.Enabled = $true
$timer.Autoreset = $true
Register-ObjectEvent -InputObject $timer -EventName Elapsed -SourceIdentifier TimerElapsed -Action {Stop-Process -Id $process.Id}
if((($process.Handles -le 700) -and ($previous_Handles -ge 700) -or ($process -eq $null)))
{
Stop-Process -Id $process.Id
$previous_Handles = 0
$Timer.Stop()
Unregister-Event -Force -SourceIdentifier TimerElapsed
Start-Process C:\Windows\System32\mstsc.exe C:\Connection\Terminal-Server.RDP
}
elseif($process.Handles -ge 925) {
$process = Get-Process mstsc
$previous_Handles = $process.Handles
$Timer.Stop()
Start-Sleep -m 500
Unregister-Event -Force -SourceIdentifier TimerElapsed
}
else {
Start-Sleep -m 500
$previous_Handles = $process.Handles
$Timer.Start()
}
}
感谢您的评论,Pesistent13 :-)我会看看我是否可以使用start-proces变量清理代码。 Allthough这也适用。我得到了代码并正在运行。但总是对更聪明的方式感兴趣,因为我刚刚接触PowerShell。 – Andee