我做了一个非常简单的脚本来启用计算机上的远程桌面连接:
# 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会自动添加防火墙规则以允许传入的远程桌面连接。 精细。
但是,使用上面的脚本,这最后一步没有完成。 在这个非常configuration的屏幕上,Windows向我显示一条提示消息“您必须为远程桌面启用Windows防火墙例外”
问题恰恰是:我如何自动化这一步? 今天我在我安装的每台电脑上手动执行此操作。
你可以在PowerShell中使用NETSH。 要启用远程桌面规则,您可以使用此命令
netsh advfirewall Firewall set rule group="Remote Desktop" new enable=yes
从Windows 8.1 / Server 2012 R2开始,有内置的PowerShell cmdlet用于pipe理防火墙规则,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。
那么,我会有更多的search,因为我不明白你需要启用什么。
以下是从PowerShell访问本地防火墙设置的一种方法:
PS>$fw=new-object -com HNetCfg.FwMgr
这是使用COM,你也可以只是调用命令行netsh也。
你也可以看看这个用于pipe理Windows防火墙的Powergui Powerpack。 它可能会给你一些示例代码来玩:
本地防火墙设置PowerPack