2025 年 10 月 14 日,Windows 10终止支持,不会收到质量和功能更新。 Windows 10是 Intune 中允许的版本。 运行此版本的设备仍然可以在 Intune 中注册并使用符合条件的功能,但无法保证功能并且可能有所不同。
使用 Microsoft Intune 管理扩展在 Intune 中上传 PowerShell 脚本。 然后,在 Windows 设备上运行这些脚本。 管理扩展可增强 MDM,并更轻松地迁移到新式管理。
注意
有关适用于 Windows 的 Intune 管理扩展的信息,请参阅 适用于 Windows 的 Intune 管理扩展。
开始之前
默认情况下,设置为具有管理员权限的用户上下文的脚本在管理员权限下运行 PowerShell。
最终用户无需登录设备即可执行 PowerShell 脚本。
Intune 管理扩展会在每次重新启动后检查任何新脚本或更改。 将策略分配给Microsoft Entra组后,PowerShell 脚本将运行,并报告运行结果。 脚本执行后,除非脚本或策略发生更改,否则不会再次执行。 如果脚本失败,Intune 管理扩展会为接下来的三个连续 Intune 管理扩展重试三次脚本,检查。
分配给设备的 PowerShell 脚本将针对每个登录的新用户运行,但在禁用用户检查的多会话 SKU 上除外。
PowerShell 脚本会在 Win32 应用运行之前执行。 换言之,将首先执行 PowerShell 脚本。 然后,执行 Win32 应用。
PowerShell 脚本在 30 分钟后超时。
重要
使用 PowerShell 脚本和修正脚本时的隐私意识最佳做法包括:
- 请勿在脚本中包含任何类型的敏感信息 (,例如密码)
- 请勿在脚本中包含个人数据
- 请勿使用脚本从设备收集个人数据
- 始终遵循隐私最佳做法
有关相关信息,请参阅 修正。
先决条件
- 将 PowerShell 脚本应用分配给用户或设备时,将自动安装 Intune 管理扩展。 有关详细信息,请参阅 适用于 Windows 的 Intune 管理扩展。
重要
如果设备的系统时钟在数月或数年内严重过期,则部署到运行 Intune 管理扩展的客户端的脚本将无法运行。 将系统时钟更新为最新版本后,脚本会按预期运行。
创建脚本策略并分配该策略
选择“设备>脚本”和“修正>平台脚本>”“添加>Windows 10及更高版本”。
在“基本信息”中,输入以下属性并选择“下一步”:
- 名称:输入 PowerShell 脚本的名称。
- 说明:输入 PowerShell 脚本的说明。 此设置是可选的,但建议进行。
在“脚本设置”中,输入以下属性并选择“下一步”:
脚本位置:浏览查找该 PowerShell 脚本。 脚本必须小于 200 KB (ASCII)。
使用登录凭据运行此脚本:选择“ 是 ” (默认) ,在设备上使用用户的凭据运行脚本。 选择“ 否 ”可在系统上下文中运行脚本。 许多管理员选择“是”。 如果脚本必须在系统上下文中运行,请选择“否”。
强制检查脚本签名:如果脚本必须由受信任的发布者签名,请选择“是” (默认) 。 如果不需要对脚本进行签名,请选择“ 否 ”。
在 64 位 PowerShell 主机中运行脚本:选择“是”,可以在 64 位客户端体系结构上的 64 位 PowerShell (PS) 主机中运行脚本。 选择“否”(默认),在 32 位 PowerShell 主机中运行脚本。
设置为“是”或“否”时,请对新策略行为和现有策略行为使用下表:
在 64 位 PS 主机中运行脚本 客户端体系结构 新脚本 现有的策略脚本 否 32 位 支持 32 位 PowerShell 主机 仅在 32 位 PowerShell 主机中运行,该主机适用于 32 位和 64 位体系结构。 是 64 位 在适用于 64 位体系结构的 64 位 PowerShell 主机中运行脚本。 在 32 位上运行时,脚本在 32 位 PowerShell 主机中运行。 在 32 位 PowerShell 主机中运行脚本。 如果此设置更改为 64 位,则脚本将在 64 位 PowerShell 主机中打开(它不会运行),并报告结果。 在 32 位上运行时,脚本在 32 位 PowerShell 主机中运行。
选择“作用域标记”。 作用域标记是可选的。 对分布式 IT 使用基于角色的访问控制和范围标记 具有详细信息。
添加作用域标记:
选择“选择范围标记>”,从“选择”列表中选择>现有的范围标记。
完成后,选择“下一步”。
选择“分配”> 选择要包含的组。 将显示Microsoft Entra组的现有列表。
选择一个或多个组,其中的用户的设备会接收该脚本。 选择“选择”。 所选组将显示在列表中,并接收策略。
注意
Intune 中的 PowerShell 脚本可以面向Microsoft Entra设备安全组或Microsoft Entra用户安全组。 但是,将加入工作区 (WPJ) 设备为目标时, (忽略) 用户目标,只能使用Microsoft Entra设备安全组。
选择 下一步。
在“查看 + 添加”中,将显示你配置的设置的摘要。 选择“添加”以保存脚本。 选择“添加”后,策略将部署到你选择的组。
方案 - 无法运行脚本
上午 8 点
- 签入
- 运行脚本 ConfigScript01
- 脚本失败
上午 9 点
- 签入
- 运行脚本 ConfigScript01
- 脚本失败(重试次数 = 1)
上午 10 点
- 签入
- 运行脚本 ConfigScript01
- 脚本失败(重试次数 = 2)
上午 11 点
- 签入
- 运行脚本 ConfigScript01
- 脚本失败(重试次数 = 3)
中午 12 点
- 签入
- 不会尝试运行 ConfigScript01脚本。
- 如果未对脚本进行其他更改,则不会尝试运行脚本。
监视运行状态
可在门户中监视用户和设备的 PowerShell 脚本运行状态。
在“PowerShell 脚本”中,选择要监视的脚本并选择“监视”,然后选择以下报表之一:
- 设备状态
- 用户状态
注意
从用于平台脚本的 Intune 管理中心导出的设备状态现在使用 Intune 导出 API,CSV 列名称与 API 架构一致。
删除脚本
在“PowerShell 脚本”中,右键单击该脚本,然后选择“删除”。
常见问题和解决方法
问题:PowerShell 脚本不运行
可能的解决方法:
PowerShell 脚本不会在每次登录时运行。 它们在下述情况下运行:
在向设备分配脚本时
如果更改了脚本,请将其上传,再将其分配给用户或设备
提示
Microsoft Intune 管理扩展是一项在设备上运行的服务,如同服务应用 (services.msc) 中列出中的任何其他服务一样。 设备重新启动后,此服务可能会重启,并且检查使用 Intune 服务分配的任何 PowerShell 脚本。 如果 Microsoft Intune 管理扩展 服务设置为“手动”,则服务可能无法在设备重新启动后重启。
确保设备已加入到Microsoft Entra ID。 仅以Microsoft Entra ID 向工作区或组织注册的设备不会收到脚本。
确认 Intune 管理扩展已下载到
%ProgramFiles(x86)%\Microsoft Intune Management Extension。脚本不会在 S 模式下的 Surface Hub 或 Windows 上运行。
检查日志是否存在任何错误。 请参阅(本文中的)Intune 管理扩展日志。
对于可能的权限问题,确保将 PowerShell 脚本的属性设置为
Run this script using the logged on credentials。 另外,确保已登录的用户具有适当的权限来运行脚本。要隔离脚本问题,可以:
检查设备上的 PowerShell 执行配置。 相关指南请参阅PowerShell 执行策略 。
使用 Intune 管理扩展运行示例脚本。 例如,创建
C:\Scripts目录,并为每个人提供完全控制权限。 运行以下脚本:write-output "Script worked" | out-file c:\Scripts\output.txt如果成功,应创建 output.txt,其中应包括“脚本已运行”文本。
要在不使用 Intune 的情况下测试脚本执行,请在系统帐户中本地使用 psexec 工具来运行脚本:
psexec -i -s如果脚本报告成功,但实际上并没有成功,则防病毒服务可能是沙盒 AgentExecutor。 以下脚本始终在 Intune 中报告失败。 可以使用此脚本进行测试:
Write-Error -Message "Forced Fail" -Category OperationStopped mkdir "c:\temp" echo "Forced Fail" | out-file c:\temp\Fail.txt如果脚本报告成功,请查看
AgentExecutor.log以确认错误输出。 如果脚本执行,长度应为 >2。为捕获
.error和.output文件,以下代码片段会通过 AgentExecutor 将脚本执行到 PowerShell x86 (C:\Windows\SysWOW64\WindowsPowerShell\v1.0)。 它会保留日志以供查看。 请记住,Intune 管理扩展会在脚本执行后清除日志:$scriptPath = read-host "Enter the path to the script file to execute" $logFolder = read-host "Enter the path to a folder to output the logs to" $outputPath = $logFolder+"\output.output" $errorPath = $logFolder+"\error.error" $timeoutPath = $logFolder+"\timeout.timeout" $timeoutVal = 60000 $PSFolder = "C:\Windows\SysWOW64\WindowsPowerShell\v1.0" $AgentExec = "C:\Program Files (x86)\Microsoft Intune Management Extension\agentexecutor.exe" &$AgentExec -powershell $scriptPath $outputPath $errorPath $timeoutPath $timeoutVal $PSFolder 0 0
问题:为什么脚本在 Windows 不再托管的情况下运行?
不再管理具有已分配脚本的 Windows 设备时,不会立即删除 IME。 IME 检测到 Windows 在下一个 IME 检查 (通常每隔 8 小时) 管理一次,并取消脚本运行。 同时,任何本地存储的脚本都可以运行。 当 IME 无法检查时,它会) 设备唤醒时间 (最多 24 小时重试签入,然后从 Windows 设备中删除自身。