You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Get-IntuneManagedDevice筛选今日同步的符合条件Apple设备

解决PowerShell筛选Apple设备今日同步时间无结果的问题

你原本的命令能正确筛选出制造商为Apple、受监管(IsSupervised=$true)、序列号非空且设备名不含"MOB-"的设备,但添加lastsyncdatetime为今日的筛选条件后无结果,核心问题在于字符串格式的日期无法正确匹配时间范围,以及lastsyncdatetime包含时分秒导致精确匹配几乎不可能命中。

关键解决思路

  1. 避免直接用字符串比较日期,先把lastsyncdatetime字段转换成DateTime对象,规避系统文化差异导致的格式解析错误(比如英文系统会把DD/MM/YYYY当成MM/DD/YYYY)。
  2. 筛选"今日"设备时,匹配今日00:00:00到次日00:00:00之间的所有时间,而非精确到某一秒的时间点。

修改后的命令示例

假设你使用的是Microsoft Graph PowerShell模块(Intune设备管理常用),修改后的命令如下:

# 定义今日的起始和结束时间范围
$todayStart = Get-Date -Hour 0 -Minute 0 -Second 0
$todayEnd = $todayStart.AddDays(1)

# 获取并筛选符合条件的设备
Get-MgDeviceManagementManagedDevice -Filter "Manufacturer eq 'Apple' and IsSupervised eq true and SerialNumber ne null and not(DeviceName contains 'MOB-') and not(ManagedDeviceName contains 'MOB-')" |
    Where-Object {
        # 按指定格式转换同步时间为DateTime对象,避免格式解析错误
        $syncTime = [DateTime]::ParseExact($_.lastsyncdatetime, 'dd/MM/yyyy HH:mm:ss', [System.Globalization.CultureInfo]::InvariantCulture)
        # 判断是否在今日时间范围内
        $syncTime -ge $todayStart -and $syncTime -lt $todayEnd
    } |
    Select-Object SerialNumber, DeviceName, ManagedDeviceName, lastsyncdatetime

原方法失效的原因

  • 精确匹配无意义:lastsyncdatetime包含时分秒,只有设备同步时间和你输入的精确时间完全一致才会被选中,这种情况几乎不会发生。
  • 字符串比较的隐患:直接用字符串筛选(比如lastsyncdatetime eq '01/10/2024 00:00:00'),不仅会因为时分秒漏选大量设备,还可能因系统文化设置导致日期解析错误。

额外注意事项

  • 如果你的lastsyncdatetime格式带AM/PM标识,需要调整ParseExact的格式字符串为'dd/MM/yyyy hh:mm:ss tt'。
  • 若使用旧版Intune PowerShell模块(Get-IntuneManagedDevice),逻辑完全一致,替换对应命令即可。

内容的提问来源于stack exchange,提问作者Gavin Eldred

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:43:17