Скрипт Powershell для - PullRequest
       0

Скрипт Powershell для

0 голосов
/ 19 февраля 2020

У меня есть Windows Сервер 2016 Datacenter (64-разрядный) в качестве файлового сервера (содержит несколько общих папок и подпапок).

Я хочу создать список ИЛИ экспортировать структуру папок пользователя вместе с разрешениями (Чтение , Modify, Full .. et c ..)

Я пытался использовать приведенный ниже сценарий PS, но получаю сообщение об ошибке, о котором упоминал после сценария.

Powershell

$FolderPath = dir -Directory -Path "E:\Project Folders\#Folder_Name" -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 "C:\Folder Permissions\Folder Name.csv" 

Ошибка:

dir: Доступ к пути «E: \ Папки проекта ** Путь к папке ** \ Новая папка» запрещен. В C: \ Users \ Администратор \ Documents \ PS Script ** Имя файла **. Ps1: 1 char: 15 + ... oldPath = dir -Directory -Path "E: \ Папки проекта ** Имя папки ** "-Re ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~ + CategoryInfo: PermissionDenied: (E: \ Project Fold ... ngar \ Новая папка: String) [Элемент Get-Child], UnauthorizedAccessException + FullyQualifiedErrorId: DirUnauthorizedAccessError, Microsoft. PowerShell.Commands.GetChildItemCommand

Пожалуйста, помогите мне!

Заранее спасибо

1 Ответ

0 голосов
/ 19 февраля 2020

Как отмечено в других комментариях.

Это не ошибка / проблема PowerShell, это проблема с правами доступа. То же самое может / произойдет, если вы скажете, что использовали этот вариант использования в дереве папок Windows.

Поскольку вы знаете, что это произойдет, либо исправьте разрешения для дерева, над которым вы работаете, либо сделайте это.

Get-ChildItem -Directory -Path 'C:\Windows\System32' -Recurse -ErrorAction SilentlyContinue

или если вы хотите просто остановиться, если путь не пройден.

# Treat non-terminating erros as terminating
$RootFolderUnc = 'C:\Windows\System32'

Try {Get-ChildItem -Directory -Path $RootFolderUnc -Recurse -ErrorAction Stop}
Catch [System.UnauthorizedAccessException] 
{
    Write-Warning -Message "$env:USERNAME. You do not have permissions to view this path."
    $_.Exception.Message
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...