远程以管理员权限执行PowerShell脚本遇权限问题求助
远程执行需管理员权限的PowerShell脚本问题解决方案
核心问题
当前脚本失效的原因:
- 通过
Invoke-Command建立的远程会话默认是非管理员权限级别 -Verb RunAs参数在无交互的远程环境中无法触发UAC弹窗,导致Script_C检测到未满足提升权限要求,返回"Access Denied"错误
具体修复方案
方案1:使用PowerShell 7+内置管理员远程参数(推荐)
若环境已升级至PowerShell 7或更高版本,直接修改Server A上的Script_A.ps1,添加-RunAsAdministrator参数(需确保执行账号在Server B拥有管理员权限):
Invoke-Command -ComputerName "Server B" -RunAsAdministrator -ScriptBlock{ Set-Location "C:\Path" .\Script_B.ps1 }
方案2:Windows PowerShell 5.1兼容方案
若仍使用Windows PowerShell 5.1,修改Server B上的Script_B.ps1,通过Start-Process启动带管理员权限的PowerShell进程执行Script_C:
Set-Location "C:\Path" Start-Process powershell.exe -ArgumentList "-File .\Script_C.ps1 -Force" -Verb RunAs -Wait -NoNewWindow
同时需在Server B上调整UAC设置以支持无交互权限提升:
- 运行
gpedit.msc打开组策略编辑器 - 定位到
计算机配置>Windows设置>安全设置>本地策略>安全选项 - 将
用户账户控制: 管理员批准模式中管理员的提升权限提示行为设置为不提示,直接提升 - 若使用内置管理员账号,需启用
用户账户控制: 用于内置管理员账户的管理员批准模式
必要前提
- 执行Script_A的账户必须是Server B的本地管理员组成员
- 远程环境无法处理交互式UAC弹窗,必须确保UAC配置允许无提示的管理员权限提升
内容的提问来源于stack exchange,提问作者cosmo_
相关产品推荐
相关产品推荐

