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