使用 Microsoft Intune 执行批量按需修复
Microsoft Intune 和脚本包(包含 2 个 PowerShell 脚本)中的补救措施可以检测问题并按定义的计划进行补救。然后,Intune 提供有关所有设备的修复情况的报告,建议是否检测到问题以及问题是否已得到修复。
补救措施的任何问题是它们按计划运行,并且它们不会动态地对问题做出反应,仅在配置为运行时才做出反应。因此,最终用户有可能在问题被自动修复之前发现问题。在这种情况下,要求用户等待修复任务运行可能会很不方便。相反,最好按需运行修复任务。
按需修复任务当前一次只能在一台计算机上运行。在本教程中,我将向您展示如何使用 Microsoft Graph PowerShell 在使用 Intune 管理的多个或所有设备上批量运行修复任务。
要求
要使用 PowerShell 运行按需修复任务,我们将使用 Microsoft Graph PowerShell SDK,特别是以下模块:
- Microsoft.Graph.Authentication
- Microsoft.Graph.Beta.DeviceManagement
全局管理员用户还需要能够同意以下权限:
- DeviceManagementConfiguration.Read.All(读取修复包)
- DeviceManagementManagedDevices.Read.All(读取设备信息)
- DeviceManagementManagedDevices.PrivilegedOperations.All(启动修复任务)
有关安装 Microsoft Graph PowerShell 模块和查找可用权限的更多信息,请参阅我的帖子:
- 如何安装 Microsoft Graph PowerShell 模块 (ourcloudnetwork.com)
- 如何查找 Microsoft Graph PowerShell (ourcloudnetwork.com) 的权限
批量 Intune 按需修复脚本
该脚本相当简单。简而言之,它将根据您定义的过滤器收集所有目标设备,然后在循环中的每个设备上启动修复包,这也是您需要定义的。
<#
Script by Daniel Bradley
https://www.linkedin.com/in/danielbradley2/
https://ourcloudnetwork.com/
#>
###EDIT THESE VALUES###
$ScriptPackageName = "" #Define the exact remediation package name here
$DeviceFilter = "" #Define the exact device filter here, for example: OwnerType eq 'Company'
#Connect to Microsoft Graph
Connect-MgGraph -scopes DeviceManagementConfiguration.Read.All, DeviceManagementManagedDevices.Read.All, DeviceManagementManagedDevices.PrivilegedOperations.All
#Get Script package
$RemediationPackage = Get-MgBetaDeviceManagementDeviceHealthScript -Filter "DisplayName eq '$ScriptPackageName'"
#Create request body
$body = @{
"ScriptPolicyId" = "$($RemediationPackage.id)"
} | ConvertTo-Json
#Store target devices
$TargetDevices = Get-MgBetaDeviceManagementManagedDevice -filter "$DeviceFilter"
#Loop through each device
Foreach ($device in $TargetDevices){
Write-Host "Initiating remediation package $ScriptPackageName for $($Device.DeviceName)" -ForegroundColor Cyan
$uri = "https://graph.microsoft.com/beta/deviceManagement/managedDevices('$($device.id)')/initiateOnDemandProactiveRemediation"
Invoke-MgGraphRequest -Uri $uri -Method POST -Body $body -ContentType "application/json"
}包起来
创建此脚本是为了帮助加快修复包的初始部署。在大多数情况下,修复包不会旨在解决眼前的问题,而是帮助维护 Intune 中无法直接提供受支持的设置的设备的配置和合规性。不幸的是,由于时间紧迫,可能需要加快部署速度,特别是在现有修复包的性质已被修改的情况下,此脚本有助于实现该要求。
我绝不是说这个脚本已经可以用于生产,而是它是一个概念证明,您应该在实施之前进行测试和修改。