2014-10-04 85 views
0

当前我正在执行用于从多个服务器获取单个文件夹的访问控制列表的脚本。在执行脚本时,我收到了访问列表System.Security.AccessControl.AuthorizationRuleCollection从多个服务器获取单个文件夹的访问控制列表

$a = @() 
$servers = Get-Content "F:\Team CDS\ExchServerlist.txt" 
ForEach ($server in $servers) 
{ 
$b = New-Object System.Object 
$b = get-acl "\\$server\F$\Team CDS" | select-object -property @{Name = 'Path'; Expression = { ($_.PSPath -split '::')[1]; } },owner,access 
$a += $b 
$a | Export-Csv -NoTypeInformation -Path "F:\access1.csv" 
} 

输出:

\\9021\F$\Team CDS","OnlyL3","System.Security.AccessControl.AuthorizationRuleCollection" 
\\9022\F$\Team CDS","OnlyL3","System.Security.AccessControl.AuthorizationRuleCollection" 
\\9022\F$\Team CDS","OnlyL3","System.Security.AccessControl.AuthorizationRuleCollection" 

请帮我更新了对输出文件访问性能。

+0

可以通过管道将'Access'属性'出String'样这个:'@ {Label =“Access”; Expression = {$ _。Access | Out-String}}'但输出将是一个对象的集合。从本质上讲,你将在主表中有一张表格,所以为了CSV导出,你需要做一些额外的格式化。 – 2014-10-04 12:20:36

+0

你真的在找什么信息? 'Get-Acl'可以返回具有多级访问权限的对象。这不适合单行输出。你可能需要使用foreach-Loop来循环它们 – Matt 2014-10-04 12:28:25

回答

0

我平时出去扩展ACL,只是增加我从安全描述符需要将每个对象的路径和其他信息:

Get-Content "F:\Team CDS\ExchServerlist.txt" | ForEach-Object { 

    $Path = "\\$_\F$\Team CDS" 

    $Acl = Get-Acl $Path 
    $Acl | 
     Select-Object -ExpandProperty Access | 
     Add-Member -MemberType NoteProperty -Name Path -Value $Path -PassThru | 
     Add-Member -MemberType NoteProperty -Name Owner -Value $Acl.Owner -PassThru 

} | Export-Csv -NoTypeInformation -Path "F:\access1.csv" 
相关问题