Как отключить удаленный рабочий стол Windows с помощью Powershell? - PullRequest
5 голосов
/ 25 ноября 2011

Все наши тестовые наборы работают на виртуальных машинах (Windows Server 2003/08), и тестеры получают к ним доступ только через удаленный рабочий стол.

Некоторые этапы обслуживания требуют отключения всех пользователей системы и деактивации доступа через удаленный рабочий стол.

Я начал писать сценарии обслуживания в powershell и ищу способ временно деактивировать удаленный рабочий стол. Возможно ли это, какие-нибудь прямые решения для этого?

Что я пробовал до сих пор:

  • Коллега порекомендовал отключить netlogon-сервис, но я могу все еще входите в систему с удаленного рабочего стола.
  • Другой коллега рекомендовал отключить блокировку порта для
    удаленный рабочий стол с брандмауэром, но как-то не чувствуется
    право на меня (?), потому что я не хочу менять одну часть системы влиять на другую часть. Я слишком требователен ...? ;)

Любые советы высоко ценятся.

Ура, Tobi

Ответы [ 4 ]

1 голос
/ 25 ноября 2011

Вам необходимо установить значение

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\fDenyTSConnections 

по умолчанию на 1, чтобы отключить удаленный рабочий стол, но необходимо перезагрузить компьютер.

Другой способ, который не требует перезагрузки (НЕ ИСПЫТАНО):

$ts=get-WMIObject Win32_TerminalServiceSetting  -computername remotemachinename

$ts.SetAllowTSConnections(0)
1 голос
/ 03 февраля 2012

Теперь я нашел решение, которое идеально подходит для меня.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

0 голосов
/ 04 марта 2015

Я часто использую этот код gWmi:

#Remote change logon /disable
$TS_Connector = gwmi Win32_TerminalServiceSetting -N "root/cimv2/terminalservices" -computername $ServerName -Authentication PacketPrivacy
$TS_Connector.Logons=1
$TS_Connector.Put()

и для включения входа в систему

#Remote change logon /enable
$TS_Connector = gwmi Win32_TerminalServiceSetting -N "root/cimv2/terminalservices" -computername $ServerName -Authentication PacketPrivacy
$TS_Connector.Logons=0
$TS_Connector.Put()

вместо Invoke-command (), потому что открыт RCP и соединение RPC отключенопо умолчанию для windows

0 голосов
/ 25 ноября 2011

В поисках чего-то еще этим утром (по совпадению) я увидел следующее: " Проверка и включение удаленного рабочего стола с PowerShell ".

Резюме: включает в себя манипуляции с реестром.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...