PowerShell脚本本地运行正常但Intune推送报错
Intune推送PowerShell脚本失败(路径不存在)的解决方法
问题根源
Intune默认以SYSTEM系统账户执行PowerShell脚本,而HKCU:\指向的是SYSTEM账户的用户注册表 hive,并非当前登录用户的注册表分支,所以脚本会提示路径不存在。本地执行时用的是当前用户上下文,因此能正常访问HKCU:\路径。
解决方案
方案1:切换到当前用户注册表上下文执行
通过加载当前登录用户的NTUSER.DAT文件到HKLM临时路径,完成注册表修改后卸载该临时 hive:
# 确保日志目录存在 if (-not (Test-Path "C:\ProgramData\IntuneLogs")) { New-Item -Path "C:\ProgramData\IntuneLogs" -ItemType Directory -Force | Out-Null } Start-Transcript -Path "C:\ProgramData\IntuneLogs\RestartApps.log" -Append # 获取当前登录的活动用户信息 $currentUser = Get-CimInstance Win32_ComputerSystem | Select-Object -ExpandProperty UserName $userName = $currentUser.Split('\')[1] $userSID = (New-Object System.Security.Principal.NTAccount($currentUser)).Translate([System.Security.Principal.SecurityIdentifier]).Value # 加载用户注册表Hive到HKLM临时节点 reg load "HKLM\TempUserHive" "C:\Users\$userName\NTUSER.DAT" # 创建/修改注册表项 New-ItemProperty -Path "HKLM:\TempUserHive\Software\Microsoft\Windows NT\CurrentVersion\Winlogon" ` -Name "RestartApps" -PropertyType DWORD -Value 1 -Force # 卸载临时Hive(必须执行,否则用户无法正常加载自己的注册表) reg unload "HKLM\TempUserHive" Stop-Transcript
方案2:以登录用户身份推送脚本
在Intune控制台配置脚本时,选择以登录用户身份运行选项:
- 登录Intune管理中心,进入「设备」>「脚本」>「添加」>「Windows 10及以上」
- 上传脚本后,在「运行脚本设置」中勾选「以登录用户身份运行」
- 将脚本分配给用户组(而非设备组),确保脚本在用户登录时执行
注意事项
- 日志路径优先选择
C:\ProgramData目录,SYSTEM账户对该路径有完整读写权限,避免C:\根目录的权限限制 - 添加
-Force参数可覆盖已存在的注册表项,避免因重复执行导致报错
内容的提问来源于stack exchange,提问作者Launchpad 72 Launchpad72
相关产品推荐
相关产品推荐

