Теперь я нашел решение, которое идеально подходит для меня.Windows Server 2008 поставляется с функцией под названием « Режим очистки сервера служб терминалов »
... Режим очистки сервера TS предотвращает вход новых пользователей на сервер, в то время как разрешает в настоящее времявошли в систему пользователей, чтобы восстановить свои существующие сеансы.Дождавшись, пока существующие пользователи сохранят свою работу и выйдут из системы, администратор может отключить сервер терминалов для обслуживания без потери пользовательских данных.
Перед тем, как активировать режим слива, я гарантирую, что никто невошел в систему, а затем активировал режим стока с помощью следующего кода:
Invoke-Command -ComputerName myServerHostName -ScriptBlock
{
Set-ItemProperty -Path "HKLM:\SYSTEM\Currentcontrolset\control\Terminal Server" -Name TSServerDrainMode -Value 1
}
Несмотря на то, что я изменяю раздел реестра, я не обязан перезагружать сервер, чтобы изменения вступили в силу.Это работает без перезагрузки.
Когда я закончу выполнять работы по техническому обслуживанию, я деактивирую режим слива с "-Value 0", и пользователи могут войти снова.
Работает как чудо!
Мой первоначальный ответ был:
Мое предпочтительное решение, которое я нашел с помощью обширного поиска в Интернете, выглядит следующим образом (также не проверено):
$Terminal = Get-WmiObject Win32_Terminal –Computer “ComputerName”
$Terminal.Enable($True)
Другие возможные и интересные фрагменты кода или варианты по теме, которые я нашел:
$myWmiObject = Get-WmiObject -namespace “rootCIMV2TerminalServices” -class Win32_Terminal -Computer “ComputerName” -Authentication PacketPrivacy
или
Set-WmiInstance -namespace “rootCIMV2TerminalServices” -class Win32_Terminal -ComputerName “ComputerName” -Authentication PacketPrivacy -Argument @{fEnableTerminal=0}
или
Get-WmiObject -ComputerName “ComputerName” -namespace root/cimv2/terminalservices -class Win32_Terminal -Authentication PacketPrivacy