PowerShell 5.1 Set-Acl

问题描述 投票:0回答:1

我尝试在我的PowerShell脚本中使用Set-Acl

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

这项工作在管理员

但如果我尝试在User中启动脚本,请升级到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

编辑:

感谢解决方案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)

我只是在我的Set-Acl中输出了Get-Acl的结果,这没关系。

powershell powershell-v5.0
1个回答
0
投票

你的脚本有问题。

  • 您不需要将scrtipblock设置为变量,最好直接调用它。
  • param块中有一个不需要的逗号。
  • 这里不需要括号(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

如下所示,我们必须转义$符号,以便在双引号中使用时不会调用该值。

`$My_acl
© www.soinside.com 2019 - 2024. All rights reserved.