我编写了一个非常简单的脚本来在计算机上启用远程桌面连接:
# 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 防火墙例外”
问题就是:我如何才能自动执行此步骤?今天我在安装的每台计算机上都手动执行此操作。
答案1
您可以在 PowerShell 中使用 NETSH。要启用远程桌面规则,您可以使用此命令
netsh advfirewall Firewall set rule group="Remote Desktop" new enable=yes
答案2
从 Windows 8.1 / Server 2012 R2 开始,有用于管理防火墙规则的内置 PowerShell cmdlet,并且 netsh advfirewall 有一条消息表明它可能会在未来版本的 Windows 中被删除。
对于这个具体案例:
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Set-NetFirewallRule -Enabled True
你可以通过以下方式查看其余内容:
Get-Help *firewall*
或者根据 netsh 消息本身:
Get-Command -Module NetSecurity
不幸的是,在 Windows 7 或 Server 2008R2 上安装 WMF 4.0(PowerShell 4.0)似乎不会添加新的 NetFirewall cmdlet。
答案3
好吧,我需要进行更多搜索,因为我不清楚您需要启用什么。
以下是从 PowerShell 访问本地防火墙设置的一种方法:
PS>$fw=new-object -com HNetCfg.FwMgr
那是使用 COM,您也可以调用命令行 netsh。
答案4
您还可以查看用于管理 Windows 防火墙的 Powergui Powerpack。它可能会为您提供一些示例代码供您使用: