PowerShell检查AD账户修改时间时出现op_Subtraction多义重载错误
解决思路
先确认属性类型:在遍历
$Imported的循环中添加一行代码,检查Modified属性的实际类型:Write-Host "Modified type for $($i.Name): $($i.Modified.GetType().FullName)"手动执行
Get-ADUser返回的ADUser对象中,Modified是System.DateTime类型,但如果$Imported是从CSV或其他非AD数据源导入的集合,Modified大概率会被解析为字符串(System.String)。这种情况下PowerShell无法确定如何执行DateTime与字符串的减法操作,就会触发歧义重载错误。强制转换为DateTime类型:如果确认
Modified是字符串类型,计算时间差前先将其转换为DateTime:$modifiedDate = [DateTime]$i.Modified $ObjDelta = (Get-Date) - $modifiedDate若字符串日期格式非系统默认,用
ParseExact指定格式更稳妥:$dateFormat = "yyyy-MM-dd HH:mm:ss" # 替换为你的实际日期格式 $modifiedDate = [DateTime]::ParseExact($i.Modified, $dateFormat, $null) $ObjDelta = (Get-Date) - $modifiedDate优化导入过程:如果
$Imported来自CSV文件,导入时直接指定类型可避免后续转换:$Imported = Import-Csv -Path "your_file.csv" -Type @{ Modified = [DateTime] }
内容的提问来源于stack exchange,提问作者Matthew Watt
相关产品推荐
相关产品推荐

