使用Get-IntuneManagedDevice获设备清单时PhysicalMemoryInBytes显示0,求非Graph+Postman方案
解决Intune中
Get-IntuneManagedDevice返回PhysicalMemoryInBytes为0的问题 以下是无需依赖Postman的替代方案:
方案1:通过Intune自定义设备属性收集RAM数据
Intune原生的PhysicalMemoryInBytes字段可能因设备同步延迟或库存配置问题无法正确获取,可通过自定义脚本上传RAM数据:
- 编写PowerShell脚本获取设备RAM总量:
$totalRAM = Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum | Select-Object -ExpandProperty Sum return @{CustomPhysicalMemory = $totalRAM}
- 在Intune控制台中创建设备配置脚本,上传上述脚本,设置运行上下文为「系统上下文」(确保权限足够读取硬件信息)。
- 脚本运行后,可通过以下命令查询包含自定义RAM字段的设备清单:
Get-IntuneManagedDevice | Select-Object DeviceName, Manufacturer, ProcessorModel, @{ Name = "PhysicalMemoryInBytes" Expression = { ($_.extensionAttributes | ConvertFrom-Json).CustomPhysicalMemory } } | Out-GridView
方案2:启用完整硬件库存并通过Graph PowerShell查询
无需Postman,直接用PowerShell调用MS Graph获取准确的RAM数据:
- 先确认Intune已启用完整硬件库存:
- 进入Intune控制台 → 设备 → 设备库存 → 硬件 → 确保勾选
Win32_PhysicalMemory类。
- 进入Intune控制台 → 设备 → 设备库存 → 硬件 → 确保勾选
- 使用PowerShell调用Graph API(需先安装
Microsoft.Graph.Intune模块或MSAL.PS模块):
# 示例:用MSAL获取认证令牌 $authToken = Get-MsalToken -ClientId "你的Intune应用客户端ID" -TenantId "你的租户ID" -Scopes "DeviceManagementManagedDevices.Read.All" # 查询设备及RAM信息 $devices = Invoke-RestMethod -Uri "https://graph.microsoft.com/v1.0/deviceManagement/managedDevices?$select=deviceName,physicalMemoryInBytes,manufacturer,processorModel" -Headers @{Authorization = "Bearer $($authToken.AccessToken)"} -Method Get # 输出到GridView $devices.value | Out-GridView
注:如果之前PhysicalMemoryInBytes为0,启用完整库存后需等待设备同步(通常1-24小时)。
方案3:远程批量读取设备本地RAM数据
若设备可通过WinRM访问(如域环境),直接从设备本地获取最准确的RAM信息:
# 获取Intune设备清单 $intuneDevices = Get-IntuneManagedDevice | Select-Object DeviceName, Manufacturer, ProcessorModel, DeviceId # 批量远程查询RAM foreach ($device in $intuneDevices) { try { $ram = Invoke-Command -ComputerName $device.DeviceName -ScriptBlock { Get-CimInstance Win32_PhysicalMemory | Measure-Object Capacity -Sum | Select-Object -ExpandProperty Sum } -ErrorAction Stop [PSCustomObject]@{ DeviceName = $device.DeviceName Manufacturer = $device.Manufacturer CPU = $device.ProcessorModel PhysicalMemoryInBytes = $ram } } catch { Write-Warning "无法读取$($device.DeviceName)的RAM数据:$_" } } | Out-GridView
内容的提问来源于stack exchange,提问作者Bahruz
相关产品推荐
相关产品推荐

