任务计划程序运行含Get-WmiObject的PowerShell脚本时遇拒绝访问错误
任务计划程序运行PowerShell脚本WMI访问被拒绝的解决方法
问题背景
通过任务计划程序运行PowerShell脚本时触发「拒绝访问」错误,但直接在PowerShell控制台执行该脚本完全正常。已按微软文档配置DCOM和WMI权限,且为运行任务的用户授予了「作为批处理作业登录」权限。涉及关键命令及任务计划配置如下:
- WMI查询命令:
Get-WmiObject Win32_Service -Filter "Name Like '%<service_name>%'" - 任务计划执行命令:
powershell.exe -executionpolicy bypass -windowstyle hidden -noninteractive -nologo -file "name_of_script.ps1"
解决方案
替换为CIM命令
旧版WMI命令在批处理/任务计划场景下权限兼容性较差,改用CIM命令可规避多数权限问题,修改后的命令为:Get-CimInstance Win32_Service -Filter "Name Like '%<service_name>%'"完善任务计划的用户权限配置
- 确保任务计划指定的用户拥有本地管理员权限(本地WMI的部分操作仍需管理员级权限)
- 在任务计划「常规」选项卡中,勾选「不管用户是否登录都要运行」,并强制勾选「使用最高权限运行」
- 检查本地安全策略,确认该用户未被列入「拒绝作为批处理作业登录」列表
细化WMI命名空间权限
运行wmimgmt.msc打开WMI控制台,右键「WMI控制(本地)」→「属性」→「安全」选项卡,展开Root\CIMV2命名空间:- 为运行任务的用户分配「启用账户」「远程启用」权限
- 设置权限应用范围为「这个命名空间及子命名空间」
确保执行策略临时生效
部分系统的组策略会限制-executionpolicy bypass参数,可在脚本开头添加以下命令,强制临时放宽当前进程的执行策略:Set-ExecutionPolicy Bypass -Scope Process -Force
内容的提问来源于stack exchange,提问作者jarodas2004
相关产品推荐
相关产品推荐

