Ошибка при попытке получить доступ к дочерним папкам в скрипте

Недавно я делал этот код, пытаясь получить только всех и аутентифицированных пользователей из 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


person Fernando Cabrera    schedule 09.09.2019    source источник


Ответы (1)


Для начала вам нужно заключить условные операторы в скобки:

Get-Acl $dir | Select-Object -Expand Access |
  Where-Object { ($_.IdentityReference -like 'Everyone') -or ($_.IdentityReference -like 'NT Authority\Authenticated Users') } |
  ForEach-Object {
person Scepticalist    schedule 10.09.2019