如何在 Windows Server 2016 中使用命令行为所有联网机器禁用 windows 防火墙?
How to disable windows firewall for all networked machines using the command line in Windows Server 2016?
我目前正在使用 Windows Server 2016 构建一个由 DC 和多个联网 VM 组成的 Hyper-V 实验室。我想为所有现有和新创建的虚拟机。
到目前为止,我发现执行此操作的最佳方法是通过域配置文件的组策略。然后将 Windows Firewall: Protect all network connections
设置为 disabled
。我想做的是找到一种编写脚本的方法(如果可能,使用 Powershell)。
我发现通过在 GUI 中执行上述步骤,它会在注册表中创建一些条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\WindowsFirewall\DomainProfile
在每个条目中,都有一个名为 EnableFirewall
的 属性,它被设置为 0
。所以我尝试像这样使用 Powershell 创建所有这些:
New-Item -path "HKLM:\SOFTWARE\Policies\Microsoft" -name WindowsFirewall
New-Item -path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall" -name DomainProfile
New-ItemProperty -path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile" -name EnableFirewall -value 0 -PropertyType DWord -Force
不幸的是,它似乎没有用,所以一定还有其他我遗漏的东西。
有人知道如何在 Windows Server 2016 中使用命令行为所有联网机器完全禁用 windows 防火墙吗?
使用提升模式打开 cmd 提示符和 运行 这个:
netsh -r ComputerName -u Username -p Password -c advfirewall set allprofiles state off
如果你想对所有机器都这样做。使用 get-adcomputer
获取所有广告计算机。 运行 一个 foreach 循环并将变量 istead 放在计算机名中。
如果您拥有域管理员凭据,那么您可以使用它。
希望对您有所帮助。
根据您要禁用的配置文件,使用 -Name
参数指定配置文件(public、域、私有)。要禁用联网机器的所有配置文件,其中 $computerName
数组是您的 DC、PC 等的主机名:
$computerName = 'DC1, PC1, MS1'
Invoke-Command -Computername $computerName -ScriptBlock {
Set-NetFirewallProfile -Name Domain, Public, Private -Enabled False
}
在我看来,通过计算机启动脚本为您的域计算机设置 Windows-Firewall 并不是一个很好的解决方案。
您应该明确地使用组策略来完成这项任务。
GP does exactly what I want, I would just like a way of modifying GP using Powershell. I'm building a lab from scratch, and I'm looking to script as much of it as possible rather than using the gui.
我不完全确定您要达到的目标。
您现在已经创建了一个实验室,我认为您正在尝试编写一个完整的自动构建脚本以供将来使用。这是正确的吗?
如果是,那么我的解决方案可能就是您要找的:
- 例如在您的实验室中创建一个名为 "Firewall-Settings" 的新 GPO。
- 对新 GPO 进行所有需要的防火墙设置。
- 在组策略编辑器中打开名为“组策略对象”的主节点。 (重要)找到新建的GPO,右击select "Backup":
- 将 GPO 备份保存到文件夹中。 (文件夹必须存在)
- 正在保存 GPO 并按照下面的屏幕截图 (GUID) 命名:
准备工作到此为止。现在您可能想要使用 Powershell 编写 GPO 的创建脚本以供将来使用,并导入备份以在新环境中获取它的设置:
New-GPO -Name "FireWall-Settings" | New-GPLink -Target "DC=mydomain,DC=local" # distinguishedName of Target-OU
Import-GPO -Path $PathtoGPOBackup -TargetName "FireWall-Settings" -BackupGpoName "FireWall-Settings"
脚本在新环境中创建一个名为 "FireWall-Settings" 的 GPO,并将其链接到目标 OU。
之后,您导入备份 GPO 的设置。 GPO 范围内的所有域成员都将获得 Windows-自动配置的防火墙。
现在该过程已记录在案并且是全自动的,如果是,就是您要找的东西。
亲切的问候
我目前正在使用 Windows Server 2016 构建一个由 DC 和多个联网 VM 组成的 Hyper-V 实验室。我想为所有现有和新创建的虚拟机。
到目前为止,我发现执行此操作的最佳方法是通过域配置文件的组策略。然后将 Windows Firewall: Protect all network connections
设置为 disabled
。我想做的是找到一种编写脚本的方法(如果可能,使用 Powershell)。
我发现通过在 GUI 中执行上述步骤,它会在注册表中创建一些条目:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Policies\Microsoft\WindowsFirewall\DomainProfile
在每个条目中,都有一个名为 EnableFirewall
的 属性,它被设置为 0
。所以我尝试像这样使用 Powershell 创建所有这些:
New-Item -path "HKLM:\SOFTWARE\Policies\Microsoft" -name WindowsFirewall
New-Item -path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall" -name DomainProfile
New-ItemProperty -path "HKLM:\SOFTWARE\Policies\Microsoft\WindowsFirewall\DomainProfile" -name EnableFirewall -value 0 -PropertyType DWord -Force
不幸的是,它似乎没有用,所以一定还有其他我遗漏的东西。
有人知道如何在 Windows Server 2016 中使用命令行为所有联网机器完全禁用 windows 防火墙吗?
使用提升模式打开 cmd 提示符和 运行 这个:
netsh -r ComputerName -u Username -p Password -c advfirewall set allprofiles state off
如果你想对所有机器都这样做。使用 get-adcomputer
获取所有广告计算机。 运行 一个 foreach 循环并将变量 istead 放在计算机名中。
如果您拥有域管理员凭据,那么您可以使用它。
希望对您有所帮助。
根据您要禁用的配置文件,使用 -Name
参数指定配置文件(public、域、私有)。要禁用联网机器的所有配置文件,其中 $computerName
数组是您的 DC、PC 等的主机名:
$computerName = 'DC1, PC1, MS1'
Invoke-Command -Computername $computerName -ScriptBlock {
Set-NetFirewallProfile -Name Domain, Public, Private -Enabled False
}
在我看来,通过计算机启动脚本为您的域计算机设置 Windows-Firewall 并不是一个很好的解决方案。 您应该明确地使用组策略来完成这项任务。
GP does exactly what I want, I would just like a way of modifying GP using Powershell. I'm building a lab from scratch, and I'm looking to script as much of it as possible rather than using the gui.
我不完全确定您要达到的目标。 您现在已经创建了一个实验室,我认为您正在尝试编写一个完整的自动构建脚本以供将来使用。这是正确的吗?
如果是,那么我的解决方案可能就是您要找的:
- 例如在您的实验室中创建一个名为 "Firewall-Settings" 的新 GPO。
- 对新 GPO 进行所有需要的防火墙设置。
- 在组策略编辑器中打开名为“组策略对象”的主节点。 (重要)找到新建的GPO,右击select "Backup":
- 将 GPO 备份保存到文件夹中。 (文件夹必须存在)
- 正在保存 GPO 并按照下面的屏幕截图 (GUID) 命名:
准备工作到此为止。现在您可能想要使用 Powershell 编写 GPO 的创建脚本以供将来使用,并导入备份以在新环境中获取它的设置:
New-GPO -Name "FireWall-Settings" | New-GPLink -Target "DC=mydomain,DC=local" # distinguishedName of Target-OU
Import-GPO -Path $PathtoGPOBackup -TargetName "FireWall-Settings" -BackupGpoName "FireWall-Settings"
脚本在新环境中创建一个名为 "FireWall-Settings" 的 GPO,并将其链接到目标 OU。 之后,您导入备份 GPO 的设置。 GPO 范围内的所有域成员都将获得 Windows-自动配置的防火墙。
现在该过程已记录在案并且是全自动的,如果是,就是您要找的东西。
亲切的问候