powershell set-acl попытался выполнить несанкционированную операцию - PullRequest
0 голосов
/ 13 октября 2019

Я работаю над настройкой автоматизации для создания общих дисков (среди прочего) с помощью PowerShell, и мы можем создать папку, НО, когда мы пытаемся установить разрешения NTFS для вновь создаваемой папки, мы получаемошибка ниже:

set-acl : Attempted to perform an unauthorized operation.
+     set-acl -aclobject $acl $path
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (\\DCPSSNA002C8\...Reports\ransfos:String) [Set-Acl], UnauthorizedAccessException
    + FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.PowerShell.Commands.SetAclCommand

Код, который мы используем, выглядит следующим образом

$creds = Get-Credential
$server = "<ServerName>"    # Name of te server that contains the files
$domain = "<DomainName>"    # Used for prefixing usernames
$rootPath = "\\$server\<RootFolder>"    # Path to the root folder on the server that we create folders in
$physicianCount = Read-Host "How many are we creating today? (0-9)" # Get how many we're creating so we can get all the needed usernames
$subFolders = @("Folder 1","Folder 2","Folder 3");  # Folder's we'll be creating within another folder that gets created
$psDriveLetter = "A"    # PS Drive Name that we use for the New-PSDrive command
$i = 0  # Incrementer for the loop
while($i -lt $physicianCount){
    $i++
    $username = Read-Host "Username # $i"   # Get the username that we're processing
    New-PSDrive -Name $psDriveLetter -Root $rootPath -Credential $creds -PSProvider FileSystem >$null 2>&1  # Create New-PSDrive but don't show anything to the console
    New-Item -Path $psDriveLetter":\" -Name $username -Type Directory -Force >$null 2>&1    # Create a folder in the Root Path and set the username as it's name
    foreach($folder in $subFolders){
        # For each folder in the $subFolders array, create them within the user's folder
        New-Item -Path $psDriveLetter":\$username\$folder" -Type Directory -Force >$null 2>&1
    }
    $path = $("$psDriveLetter :\$username").Replace(" ","") # Set the $path to the PSDrive path and username folder

    # Get existing ACL
    $existingAcl = Get-Acl -Path $path
    # Set permissions
    $permissions = "$domain\$username", $FileSystemRight, 'ContainerInherit,ObjectInherit', $PropagationFlag, $AuditFlag
    # Create a new FileSystemAccessRule object
    $rule = New-Object -TypeName System.Security.AccessControl. -ArgumentList $permissions
    # Modify the existing ACL to include the new rule
    $existingAcl.SetAccessRule($rule)
    # Apply the modified access rule to the folder
    $existingAcl | Set-Acl -Path $path
    #Remove-Item $psDriveLetter":\$username" -Confirm:$false

    Remove-PSDrive -Name $psDriveLetter
}

Проблема в строке 26 (set-acl -aclobject $ acl $ path).

Я провел множество исследований и обнаружил, что при этом возникает ошибка, и мы должны сделать себя владельцем, ТОГДА применить разрешения, ТО затем переместить владельца обратно в Trusted Installer. Я пытался сделать это, но я получил тот же результат. Кроме того, ссылки, которые я нашел относительно этой ошибки, ссылаются на страницу Microsoft, которая давно ушла на пенсию. Сервер, на котором создаются эти папки, является сервером NetApps, поэтому большинство обычных команд PowerShell не работают.

Все это выполняется с моими повышенными учетными данными.

...