如何使用 PowerShell 在 Intune 中同步批量设备
Microsoft Intune 中的批量设备功能是跨 Intune 中注册的多个设备执行单个操作的便捷方法。然而,使用管理门户的一个问题是没有“添加设备”选项,或者至少没有使用现有的设备过滤器,您需要手动选择每台计算机。
在本教程中,我将向您展示如何在租户中的所有注册设备上执行批量设备同步(包括其他操作)。
先决条件
要完成本教程中的必要操作,您必须分配 Intune 管理员 角色,或者也可以使用全局管理员 帐户。
您还必须确保已安装 Microsoft Graph PowerShell SDK,您可以按照我的教程完成以下步骤:如何安装 Microsoft Graph PowerShell 模块
从 Intune 门户启动批量设备同步
Intune 管理门户也提供批量设备操作功能。请按照以下步骤使用管理门户启动批量设备同步。
1. 使用您的 Intune 管理员或全局管理员帐户登录 https://endpoint.microsoft.com/。
2. 从左侧菜单中选择设备。
2. 选择所有设备。
3. 选择批量设备操作。
4. 从下拉列表中选择操作系统类型和设备操作,然后单击下一步。我选择了Windows和同步。
5. 单击选择要包含的设备并添加您想要操作的所有设备。
6. 最后,单击下一步,然后单击创建。
单击创建后,您将看到右上角出现一条通知,表明同步请求已成功。
在 Intune 中与 PowerShell 同步批量设备
让我们看看如何使用 PowerShell 以编程方式自动向所有 Windows 设备发送同步请求。
下面我演示了两种实现相同结果的方法。
方法 1:使用 Sync-MgDeviceManagementManagedDevice
下面我使用了 Sync-MgDeviceManagementMangedDevice cmdlet 和循环来循环访问每个设备并发送同步请求。
Import-Module Microsoft.Graph.DeviceManagement.Actions
Select-MgProfile -Name beta
Connect-Mggraph -scopes DeviceManagementManagedDevices.ReadWrite.All, DeviceManagementManagedDevices.PrivilegedOperations.All
$alldevices = get-MgDeviceManagementManagedDevice | Where-Object {$_.OperatingSystem -eq "Windows"}
Foreach ($device in $alldevices) {
Sync-MgDeviceManagementManagedDevice -ManagedDeviceId $device.id
write-host "Sending device sync request to" $device.DeviceName -ForegroundColor yellow
}方法2:使用Invoke-MgGraphRequest
在这里,我使用 Invoke-MgGraphRequest 向 Microsoft Graph 发出 POST 请求,并提供同步我们设备所需的信息。我首先循环访问每个设备并收集 ID,然后将此信息格式化为有效负载并发送请求。
Import-Module Microsoft.Graph.DeviceManagement.Enrolment
Select-MgProfile -Name beta
Connect-Mggraph -scopes DeviceManagementManagedDevices.ReadWrite.All
$alldevices = get-MgDeviceManagementManagedDevice | Where-Object {$_.OperatingSystem -eq "Windows"}
$SyncDevices = @()
Foreach ($device in $alldevices) {
$string = $null
$string = @"
"$($device.id)"
"@
$SyncDevices = $SyncDevices + $string
}
$deviceString = $SyncDevices -join ","
$uri = "https://graph.microsoft.com/beta/deviceManagement/managedDevices/executeAction"
$json = @{
action = "syncDevice"
platform = "windows"
deviceIds = @("string")
realAction = "syncDevice"
actionName = "syncDevice"
} | ConvertTo-Json
$json = $json.Replace('"string"', $deviceString)
Invoke-MgGraphRequest -Uri $uri -Body $json -method POST -ContentType "Application/Json"
对于每个脚本,如果您想要修改要定位的设备,您可以修改 Where-Object 过滤器以包含您选择的过滤器。
其他行为
发送同步请求并不是可以使用 PowerShell 执行的唯一操作,其他批量设备操作包括:
- 删除 - 删除设备。
- 退役 - 下次签入时删除设备并在设备上留下个人数据。
- 收集诊断 - 发起诊断日志收集请求。
- 擦除 - 擦除整个设备。
- 自动驾驶仪重置 - 启动自动驾驶仪设备重置。
- 重新启动 - 重新启动设备。
- 重命名 - 重命名设备。
您可以修改方法 2 中的脚本,通过替换 action、realAction 和 actionName 字段,将上述操作发送到您的设备。





