无管理员权限用户通过Intune推送PowerShell创建计划任务失败求助
解决非管理员用户通过Intune推送PowerShell脚本创建计划任务失败的问题
问题核心原因
非管理员用户默认无权限在计划任务根目录(\)创建任务,仅能在自身专属的用户任务路径下操作;原脚本存在参数搭配错误,未正确启用定义好的任务主体配置,再加上Intune推送时的上下文权限限制,最终导致创建失败。
修复方案及修正后的脚本
1. 关键调整点
- 指定任务到用户专属路径:非管理员仅能在
\Users\<用户名>\Tasks路径下创建任务,避开根目录的管理员权限要求 - 正确使用
ScheduledTaskPrincipal参数:替代原脚本中冲突的-User参数,确保任务主体配置生效 - 确保脚本路径可访问:将目标脚本放到用户有权限读写的目录(如
%USERPROFILE%\Temp)
2. 修正后的完整脚本
# 获取当前用户 $currentUser = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name # 定义目标脚本路径(用户可访问的目录) $scriptPath = "$env:USERPROFILE\Temp\appremove.ps1" # 确保目标目录存在 if (-not (Test-Path (Split-Path $scriptPath))) { New-Item -Path (Split-Path $scriptPath) -ItemType Directory -Force | Out-Null } # 定义计划任务操作 $taskAction = New-ScheduledTaskAction -Execute "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -Argument "-ExecutionPolicy Bypass -File `"$scriptPath`"" # 定义任务触发条件:当前用户登录时运行 $taskTrigger = New-ScheduledTaskTrigger -AtLogOn -User $currentUser # 定义任务设置 $taskSettings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries # 定义任务主体:当前用户,交互式登录,有限权限 $taskPrincipal = New-ScheduledTaskPrincipal -UserId $currentUser -LogonType Interactive -RunLevel Limited # 注册计划任务(指定用户专属路径) $taskName = "AppRemoveTask" Register-ScheduledTask -Action $taskAction -Trigger $taskTrigger -TaskName $taskName -Principal $taskPrincipal -Settings $taskSettings -TaskPath "\Users\$currentUser\Tasks" Write-Host "计划任务已创建,将在$currentUser登录时运行 '$scriptPath'。"
额外排查建议
- 查看Intune执行日志:在事件查看器中定位
Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider/Admin日志,获取具体失败代码或原因(如权限不足、路径不存在) - 验证脚本复制步骤:如果
appremove.ps1需要通过Intune推送,先添加Copy-Item命令将脚本从Intune临时目录复制到用户可访问路径 - 测试用户上下文权限:在非管理员用户本地手动运行修正后的脚本,确认能正常创建任务后再通过Intune推送
内容的提问来源于stack exchange,提问作者Akos81
相关产品推荐
相关产品推荐

