いくつかのオンライン記事の助けを借りて、各RDセッションホストのすべてのユーザーをログオフするpowershellスクリプトをコンパイルできました。ユーザーをログオフして、ストレージシステムのプロファイルプロファイルにプロファイルを書き戻す際に、本当に穏やかなものを求めていました。しかし、これはあまりにも穏やかで、私が持っているユーザーとRDSサーバーの量で完了するまでに約4時間かかります。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 {}
}
ありがとう、これは良い情報です。私はこれを試してみます。私はバックグラウンドで実行されているジョブを絞りたいと言うことができます。 3つまたは4つのジョブを実行して、次のサーバーセットに移動するために追加できるものはありますか? –
whileループといくつかの再帰関数を使用して同様のことをすることはできますが、それは痛みです。実行スペースをネイティブに提供するように調整したい場合は、 –