2014-10-04 34 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" 
相關問題