我正在寻找一种使用 PowerShell 导出现有 Windows 防火墙规则的方法其中包括所引用程序的路径(对于那些引用程序路径而不是端口范围的规则)。
Get-NetFirewallRule
包含大量信息,但似乎缺少程序。最好采用人性化格式,这样我也可以自动化。最好以 PowerShell 对象的形式输出,但表格形式也足够了。
我尝试过的:
- Get-NetFirewallRule,通过管道传输到 Get-Member,通过管道传输到 Format-List *
- 采用 Get-NetFirewallRule 并使用高深度的 Export-CliXml 对其进行序列化 - 程序路径不在 XML 文件中。
- 简短(简短!)探索 netsh
- 我可以手动从 WF.msc 导出以获取制表符分隔的列表,但我希望可以自动执行一些操作。
- 我确实找到了这但它不是人类可读的,看起来像一个全/无导入导出,不是我可以仅用于提取新规则的东西
这是在管理软件公司用于持续集成的数十个构建虚拟机的背景下的,但也可以应用于我们其他工作站的系统管理。
到目前为止,我还没有找到一个解决方案,让我在一个系统上采用规则(特定规则)并创建 PowerShell 脚本(或 GPO 或其他)以将相同的规则添加到其他机器。我唯一缺少的是程序路径。一旦我有了它,我就可以轻松处理规则创建方面。
答案1
因此 Get-NetFirewallRule 实际上返回的是特殊对象。某些对象的属性只能通过关联的 Get-NetFirewall* 命令来访问。
有关应用程序信息,请将对象导入 Get-NetFirewallApplicationFilter
https://technet.microsoft.com/en-us/library/jj554860%28v=wps.630%29.aspx
PS C:\Users\Neil> get-netfirewallrule '{1A26910B-1B3B-4091-81E2-E3C7CBF02F45}' | get-netfirewallapplicationfilter
Program : C:\Program Files\MyProgram\thisProgram.exe
Package :