尝试从脚本中的子文件夹获取 acl 时出错



我最近一直在做这段代码,试图从共享文件夹中的 ACL 中获取每个人和经过身份验证的用户。

该脚本确实获取了共享并迭代它们,但我无法从父文件夹或其子文件夹获取 ACL

而且,我想知道如何导出不使用export-csv遍历每个共享而是遍历每个服务器。

已尝试使用-Depth参数,将参数get-childitem更改为get-item

它起作用的唯一方法是保持打开where-object comenting #-like 'Everyone' -or $_.IdentityReference -like 'NT AuthorityAuthenticated Users' } |

$Server="Server"
$shares = gwmi win32_Share -ComputerName $Server |
Where-Object {$_.type -eq '0'} | 
Where {$_.name -notlike "*$*"} | Select-Object -ExpandProperty Name
$Shares
foreach ($share in $shares){
$root = "\$Server$share"
$csv  = "C:temp$Server-$share.csv"
Remove-Item $csv
New-Item $csv
Get-ChildItem -literalPath $root -Recurse -directory |
ForEach-Object {
$dir = $_
##Test-Path $dir}}
Get-Acl $dir | Select-Object -Expand Access |
Where-Object { $_.IdentityReference }|#-like 'Everyone' -or $_.IdentityReference -like 'NT AuthorityAuthenticated Users' } |
ForEach-Object {
New-Object PSObject -Property @{
Folder       = $dir.FullName
Access       = $_.FileSystemRights
Control      = $_.AccessControlType
User         = $_.IdentityReference
Inheritance  = $_.IsInherited
LastModified = $dir.LastWriteTime
}
} 
} | Export-Csv $csv -Force
} 

预期导出到 csv 文件,但我有

Get-ACL:找不到路径"XXXX",因为它不存在 + 获取 ACL $Dir

首先,您需要将条件用括号括起来:

Get-Acl $dir | Select-Object -Expand Access |
Where-Object { ($_.IdentityReference -like 'Everyone') -or ($_.IdentityReference -like 'NT AuthorityAuthenticated Users') } |
ForEach-Object {

最新更新