PowerShell 5.1 设置 Acl
PowerShell 5.1 Set-Acl
我尝试在我的 PowerShell 脚本中使用 Set-Acl,如果我只是做
$my_acl = Get-Acl "C:\"
Set-Acl D:\ $my_acl
这在管理员中工作
但如果我尝试在用户中启动脚本并提升到管理员权限
$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 中,没问题。
你的脚本有问题。
- 您不需要将 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
我尝试在我的 PowerShell 脚本中使用 Set-Acl,如果我只是做
$my_acl = Get-Acl "C:\"
Set-Acl D:\ $my_acl
这在管理员中工作
但如果我尝试在用户中启动脚本并提升到管理员权限
$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 中,没问题。
你的脚本有问题。
- 您不需要将 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