You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 09:40:32