2012-06-13 59 views
0

我使用下面的查询服务器列表的防火墙规则。PowerShell的 - 服务器导出查询防火墙列表到csv

$servers = Get-Content fw_servers.txt 

foreach($serv in $servers) { 
$fw = New-Object -ComObject hnetcfg.fwpolicy2 

$fw.rules | 

Where-Object { $_.enabled -and $_.LocalPorts -like 3389 } | 

Select-Object -Property direction,protocol, localports,name 
} 

我想将此信息导出到csv文件。有人可以让我知道我可以如何使用Export-CSV?我试过把它变成一个数组,但它不适合我。我使用的是2.0

我也喜欢将导出的数据看起来像下面

Server Direction Protocol LocalPorts Name 
testsrv1 1   6   3389   Remote Desktop (TCP-In) 
testsrv2 1   6   3389   Research Remote Desktop Policy 

谢谢您的帮助。

Amelia

回答

1

我有一个顿悟,并以某种方式想通了。以下虽然不美观,但适用于我。

$servers = Import-CSV fw_servers.csv 
$servers | Foreach { 
$serv = $_.serv 
foreach-object { 
     $name = $_."Server" 
     $fw = New-Object -ComObject hnetcfg.fwpolicy2 
     $fw.rules | 
     Where-Object { $_.enabled -and $_.LocalPorts -like 3389 } | 

     Select-Object @{Name="Server"; Expression={$name}}, direction, protocol, localports, name 
       } 
} | Export-CSV C:\Users\trankaa\desktop\fw_res.csv -NoTypeInformation -Force