在幾篇在線文章的幫助下,我能夠編譯一個powershell腳本,爲我的每個RD會話主機註銷所有用戶。我希望在註銷用戶方面非常溫和,並將配置文件寫回存儲系統上的漫遊配置文件位置。但是,這太溫柔了,需要大約四個小時才能完成我擁有的用戶和RDS服務器的數量。RDS用戶註銷腳本緩慢
此腳本旨在設置每個RDS服務器耗盡,但允許重定向,如果服務器可用,所以想到這是在前15分鐘內,我會準備好前幾個服務器供用戶登錄。
所有這些工作,但我想看看是否有任何建議,加快這一點。
這裏是通過每個服務器宕機並記錄用戶出來,然後設定服務器登錄模式啓用循環:你有
ForEach ($rdsserver in $rdsservers){
try {
query user /server:$rdsserver 2>&1 | select -skip 1 | ? {($_ -split "\s+")[-5]} | % {logoff ($_ -split "\s+")[-6] /server:$rdsserver /V}
Write-Host "Giving the RDS Server time"
Write-Progress "Pausing Script" -status "Giving $rdsserver time to settle" -perc (5/(5/100))
Start-Sleep -Seconds 5
$RDSH=Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace "root\CIMV2\terminalservices" -ComputerName $rdsserver -Authentication PacketPrivacy -Impersonation Impersonate
$RDSH.SessionBrokerDrainMode=0
$RDSH.put() > $null
Write-Host "$rdsserver is set to:"
switch ($RDSH.SessionBrokerDrainMode) {
0 {"Allow all connections."}
1 {"Allow incoming reconnections but until reboot prohibit new connections."}
2 {"Allow incoming reconnections but prohibit new connections."}
default {"The user logon state cannot be determined."}
}
}
catch {}
}
感謝這是很好的信息,我會試試這個。比方說,我想扼殺在後臺運行的工作。有什麼我可以添加到這個來運行三個或四個工作,然後移動到下一組服務器? –
你可以使用while循環和一些遞歸函數來做類似的事情,但如果你想限制查看運行空間,因爲它們本身就提供了它,所以提供的鏈接顯示瞭如何使用它們。 –