Я сделал очень простой скрипт для включения подключений к удаленному рабочему столу на компьютере:
# Allow Remote Desktop connections
(Get-WmiObject -Class "Win32_TerminalServiceSetting" -Namespace root\cimv2\terminalservices).SetAllowTsConnections(1)
# Allow low-secutiry connections
(Get-WmiObject -class "Win32_TSGeneralSetting" -Namespace root\cimv2\terminalservices -Filter "TerminalName='RDP-tcp'").SetUserAuthenticationRequired(0)
Теперь я хочу закончить, добавив правило для удаленного рабочего стола в брандмауэр Windows. Как я могу этого добиться?
Кстати: Использование Windows 7
Уточнение:
Сегодня я включаю удаленный рабочий стол вручную через «Удаленные настройки» в «Панель управления \ Система и безопасность \ Система». Таким образом, Windows автоматически добавляет правило брандмауэра, разрешающее входящие подключения к удаленному рабочему столу. Хорошо.
Однако, используя мой сценарий выше, этот последний шаг не выполняется. На этом самом экране конфигурации Windows показывает мне напоминание: «Вы должны включить исключение брандмауэра Windows для удаленного рабочего стола».
Вопрос как раз в том, как автоматизировать этот шаг? Сегодня я делаю это вручную на каждом устанавливаемом мной компьютере.
Начиная с Windows 8.1 / Server 2012 R2, существуют встроенные командлеты PowerShell для управления правилами брандмауэра, а в netsh advfirewall есть сообщение о том, что он может быть удален в будущей версии Windows.
Для этого конкретного случая:
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Set-NetFirewallRule -Enabled True
Остальное можно увидеть с помощью:
Get-Help *firewall*
или в самом сообщении netsh:
Get-Command -Module NetSecurity
К сожалению, установка WMF 4.0 (PowerShell 4.0) в Windows 7 или Server 2008R2 не добавляет новые командлеты NetFirewall.
Вы можете использовать NETSH в PowerShell. Чтобы включить правило удаленного рабочего стола, вы можете использовать эту команду
netsh advfirewall Firewall set rule group="Remote Desktop" new enable=yes
Что ж, я бы так поискал больше, так как для меня не очевидно, что вам нужно включить.
Вот один из способов получить доступ к настройкам локальных брандмауэров из PowerShell:
PS>$fw=new-object -com HNetCfg.FwMgr
При использовании COM вы также можете просто вызвать netsh из командной строки.
Вы также можете взглянуть на этот пакет Powerpack для Powergui, который предназначен для управления брандмауэром Windows. Это может дать вам образец кода для игры: