我最近一直在做这段代码,试图从共享文件夹中的 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 {