Сведения о разрешениях для папок \ подпапок - PullRequest
0 голосов
/ 17 октября 2018

Я хочу извлечь папку и детали разрешений для ее подпапок.

Мой сервер - Windows 2008, я использую скрипт Windows PowerShell, но получаю сообщение об ошибке ниже.

Get-ChildItem : A parameter cannot be found that matches parameter name 'Directory'.
At line:1 char:5
+ dir -Directory -Path "H:\RMSRE7\RMS1" -Recurse -Force
+     ~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ChildItem], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Скрипт PowerShell:

$FolderPath = dir -Directory -Path "\\H:\RMSRE7" -Recurse -Force
$Report = @()
foreach ($Folder in $FolderPath) {
    $Acl = Get-Acl -Path $Folder.FullName
    foreach ($Access in $acl.Access) {
        $Properties = [ordered]@{
            'FolderName'       = $Folder.FullName;
            'AD Group or User' = $Access.IdentityReference;
            'Permissions'      = $Access.FileSystemRights;
            'Inherited'        = $Access.IsInherited
        }
        $Report += New-Object -TypeName PSObject -Property $Properties
    }
}
$Report | Export-Csv -Path "D:\Public\RE7_FolderPermissions.csv"

1 Ответ

0 голосов
/ 17 октября 2018

В PowerShell v2 (что, похоже, вы используете) командлет Get-ChildItem не имеет параметра -Directory.Это было введено в PowerShell v3.

Если вы хотите ограничить результаты Get-ChildItem каталогами, вам нужно использовать фильтр Where-Object до PowerShell v3, например:

$FolderPath = Get-ChildItem -Path "\\H:\RMSRE7" -Recurse -Force |
              Where-Object { $_.PSIsContainer }

Ускоритель типа [ordered] также недоступен до PowerShell v3, поэтому вам необходимо удалить его из кода.

$Properties = <strike>[ordered]</strike>@{
    'FolderName'       = $Folder.FullName;
    'AD Group or User' = $Access.IdentityReference;
    'Permissions'      = $Access.FileSystemRights;
    'Inherited'        = $Access.IsInherited
}

Если вы хотите обеспечить определенный порядок полей в выходном CSVВы можете передать данные через Select-Object перед экспортом.И вы можете добавить параметр -NoType к Export-Csv, чтобы избежать комментария типа объекта в начале выходного файла.

$Report |
    Select-Object FolderName, 'AD Group or User', Permissions, Inherited |
    Export-Csv -Path "D:\Public\RE7_FolderPermissions.csv" -NoType
...