PowerShell 5.1 Set-Acl - PullRequest
       10

PowerShell 5.1 Set-Acl

0 голосов
/ 28 августа 2018

Я пытаюсь использовать Set-Acl в моем скрипте PowerShell, если только я делаю

$my_acl = Get-Acl "C:\" Set-Acl D:\ $my_acl

Эта работа в Admin

но если я попытаюсь запустить скрипт в User en поднять до Admin

$my_acl = Get-Acl "C:\" $arg5={param($my_acl,)(Set-Acl D:\ $my_acl )} Start-Process powershell.exe -ArgumentList "-noexit -command & {$arg5} $my_acl" -Verb RunAs

Я получил эту ошибку

Set-Acl : AclObject Au caractère Ligne:1 : 19 + & {param($my_acl)(Set-Acl D:\ $my_acl )} System.Security.AccessContro ... + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidArgument : (System.Security...rectorySecurity:String) [Set-Acl], ArgumentExceptio n + FullyQualifiedErrorId : SetAcl_AclObject,Microsoft.PowerShell.Commands.SetAclCommand

EDIT:

Спасибо за решение PRASOON KARUNAN V решение действительно хорошее, но я просто делаю:

Start-Process powershell -ArgumentList "Get-Acl C:\ | Set-Acl D:\" -Credential ($credentials_admin) Start-Sleep -Seconds 3 Start-Process powershell -ArgumentList "Get-Acl C:\Users\$($my_user) | Set-Acl D:\$($my_user)" -Credential ($credentials_admin)

Я просто передаю результат Get-Acl в мой Set-Acl, и все в порядке.

1 Ответ

0 голосов
/ 29 августа 2018

У вашего скрипта проблемы.

  • Вам не нужно устанавливать переменную scrtipblock, лучше позвонить это напрямую.
  • В блоке параметров была нежелательная запятая.
  • Скобки здесь не требуются (Set-Acl D:\ $my_acl )
$my_acl = Get-Acl "C:\" 
Start-Process powershell.exe -ArgumentList "-noexit -command & {param(`$my_acl) Set-Acl D:\ `$my_acl} $my_acl" -Verb RunAs

Как и ниже, мы должны экранировать знак $, чтобы значение no не вызывалось, когда они используются в двойных кавычках.

`$My_acl
...