2014-06-23 125 views
0

是否有可能改变从权限输出文件上下文:更改ACL权限进行

账户文件夹路径的IdentityReference AccessControlType IsInherited InheritanceFlags PropagationFlags
NT AUTHORITY \ SYSTEM AllowFALSEContainerInherit ObjectInheritNone \ uklonfap11 \ DATA \ APPS \ ACCESS2 NT AUTHORITY \系统允许FALSE Con​​tainerInherit ObjectInherit无 BUILTIN \管理员AllowFALSEContainerInherit ObjectInheritNone \ uklonfap11 \ DATA \ APPS \ ACCESS2 BUILTIN \ Administrators允许FALSE Con​​tainerInherit ObjectInherit无

喜欢的东西:

Account Ace String对象路径 SYSTEM允许完全控制,此文件夹,子文件夹和文件(继承)\ UKSHEFAP08 \ e $ \ Data \ Global \ PHE测试用例\备份phe \ Test cases \ Benefit语句 Everyone Allow修改此文件夹,子文件夹和文件(继承)\ UKSHEFAP08 \ e $ \ Data \ Global \ PHE测试用例\ phe的备份\ Test Cases \ Benefit语句

这是否有意义或需要完整更改代码:代码片段是:

$OutFile = "C:\Users\munjanga\Documents\AoN Project\Execute\Output.csv" 
$Header = "Folder Path,IdentityReference,AccessControlType,IsInherited,InheritanceFlags,PropagationFlags" 
Del $OutFile 
Add-Content -Value $Header -Path $OutFile 

$RootPath = "C:\Users\munjanga\Documents\Operations Orchestration" 

$Folders = dir $RootPath -recurse | where {$_.psiscontainer -eq $true} 

$isInherited = @{ 
$true = 'Inherited' 
$false = 'Not Inherited' 
} 

$inheritance = @{ 
0 = 'files only' 
1 = 'this folder and subfolders' 
2 = 'this folder and files' 
    3 = 'subfolders and files' 
} 

$fldr = $Folder.FullName 

$Folders | % { 
$fldr = $_.FullName 
Get-Acl $fldr | select -Expand Access | 
select @{n='Account';e={$_.IdentityReference}}, 
    @{n='ACE String';e={"{0} {1}, {2} ({3})" -f $_.AccessControlType, 
     $_.FileSystemRights, $inheritance[$_.InheritanceFlags], 
     $isInherited[$_.IsInherited]}}, 
    @{n='Object Path';e={$fldr}}} 
+0

看起来您想要一个CSV文件。如果是这样,不要重新发明轮子。使用'Select-Object'或格式为[自定义表](http://technet.microsoft.com/en-us/library/ee692794.aspx)。然后用'Export-Csv'输出。 –

回答

0

您可以使用此计算属性:

$fldr = $Folder.FullName 
Get-Acl $fldr | select -Expand Access | 
    select @{n='Account';e={$_.IdentityReference}}, 
     @{n='ACE String';e={"{0} {1}, {2} ({3})" -f $_.AccessControlType, 
      $_.FileSystemRights, $_.InheritanceFlags, $_.IsInherited}}, 
     @{n='Object Path';e={$fldr}} 

自定义文本可以通过哈希表来提供,例如:

$isInherited = @{ 
    $true = 'Inherited' 
    $false = 'Not Inherited' 
} 

$inheritance = @{ 
    0 = 'files only' 
    1 = 'this folder and subfolders' 
    2 = 'this folder and files' 
    3 = 'subfolders and files' 
} 

$fldr = $Folder.FullName 
Get-Acl $fldr | select -Expand Access | 
    select @{n='Account';e={$_.IdentityReference}}, 
     @{n='ACE String';e={"{0} {1}, {2} ({3})" -f $_.AccessControlType, 
      $_.FileSystemRights, $inheritance[$_.InheritanceFlags.value__], 
      $isInherited[$_.IsInherited]}}, 
     @{n='Object Path';e={$fldr}} 

然而,在GUI中显示的权限有时包括比单一ACE更多,所以没有简单的方法来实现什么你要。您必须评估任何给定ACL的所有ACE,并将符合特定条件的ACL合并到单个显示记录中。


作为备注:您不应该手工制作CSV。让PowerShell为您完成这项工作:

$Folders | % { 
    $fldr = $_.FullName 
    Get-Acl $fldr | select -Expand Access | ... 
} | Export-Csv $OutFile -NoType