如果我做的话,我会尝试在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)
我只是将Get-Acl的结果通过Set-Acl传递出来,没关系。
答案 0 :(得分:0)
您的脚本有问题。
(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