С помощью нескольких онлайн-статей я смог скомпилировать сценарий powershell, который отлаживает всех пользователей для каждого из моих хостов сеансов RD. Я хотел, чтобы что-то было очень нежным при выходе из системы пользователей, и он записывал профили обратно в местоположение их перемещаемого профиля в системе хранения. Однако это слишком нежно и занимает около четырех часов, чтобы заполнить количество пользователей и серверов RDS, которые у меня есть.RDS User logoff Script Slow
Этот сценарий предназначен для установки каждого утечки сервера 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 и некоторые рекурсивные функции, но это боль, если вы хотите, чтобы дросселирование выглядело в области выполнения, поскольку они предоставляют его изначально, представленная ссылка показывает, как их использовать. –