使用包含程序path的PowerShell导出防火墙规则

我正在寻找一种方法来使用PowerShell导出现有的Windows防火墙规则,其中包括被引用程序的path(对于那些引用程序path而不是端口范围的规则)。

Get-NetFirewallRule包含大量的信息,但似乎缺less程序。 最好以人类可读的格式,我也可以自动化。 作为PowerShell对象的输出将是最好的,但表格的东西将是足够好的。

我试过了:

  • Get-NetFirewallRule,pipe道到Get-Member,pipe道到格式列表*
  • 用Get-NetFirewallRule并用高深度的Export-CliXml序列化它 – 程序path不在XML文件中。
  • 简短(简短!)在netsh周围戳
  • 我可以手动从WF.msc进行导出以获得制表符分隔的列表,但是我希望能够自动化的东西。
  • 我确实发现了这一点 ,但它不是人类可读的,看起来像一个全/无导入导出,不是我可以用来提取新规则

这是在pipe理数十个用于在软件公司持续集成的构build虚拟机的情况下,但也可以应用于我们其他工作站的系统pipe理。

到目前为止,我还没有find一个解决scheme,让我在一个系统(特定的规则)上制定规则,并创build一个PowerShell脚本(或GPO或其他),将相同的规则添加到其他机器。 我所缺less的是程序path。 一旦我有了,我可以轻松处理规则创build方面。

所以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 :