Недавно я делал этот код, пытаясь получить только всех и аутентифицированных пользователей из ACL в общих папках.
Сценарий получает общие ресурсы и перебирает их, но я не могу получить ACL из родительской папки или ее дочерних элементов.
А также я хотел бы знать, как экспортировать, не используя export-csv
итерацию по каждому общему ресурсу, а по каждому серверу.
Пробовал с параметром -Depth
, изменил параметр get-childitem
на get-item
.
Единственный способ, которым это сработало, это оставить открытым where-object comenting #-like 'Everyone' -or $_.IdentityReference -like 'NT Authority\Authenticated 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 Authority\Authenticated 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», поскольку он не существует + Get-Acl $Dir