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

在foreach的PSCustomObject中调用Get-ADUser遇inputobject属性错误

问题描述

在foreach循环内的PSCustomObject中为title属性赋值时出现错误。其余功能正常:user属性中$_.inputobject能正常返回「Firstname Lastname」格式的值,但在Get-ADUser的-Filter脚本块中无法使用该值,报错提示找不到inputobject属性,且被识别为System.Management.Automation.PSCustomObject类型。

错误信息

Get-ADUser : Property: 'inputobject' not found in object of type: 'System.Management.Automation.PSCustomObject'.

原代码

Compare-Object -ReferenceObject $users.name -DifferenceObject $results.user | foreach {
    $_.sideindicator = $_.sideindicator -replace "<=","No assigned device"
    [PSCustomObject]@{
        user = $_.inputobject
        title = Get-ADUser -Filter {name -like $_.inputobject} -Properties * | % title
        device_status = $_.sideindicator
    }
} 
解决方案

问题核心是**Get-ADUser的-Filter脚本块存在独立作用域**:脚本块内部的$_不再指向Compare-Object输出的对象,而是指向脚本块自身的上下文,因此无法识别外部的inputobject属性。

解决方法1:提前存储变量(推荐)

将$_.inputobject存入一个局部变量,在-Filter脚本块中使用这个变量:

Compare-Object -ReferenceObject $users.name -DifferenceObject $results.user | foreach {
    $currentUserName = $_.inputobject
    $_.sideindicator = $_.sideindicator -replace "<=","No assigned device"
    [PSCustomObject]@{
        user = $currentUserName
        title = Get-ADUser -Filter {name -like $currentUserName} -Properties title | Select-Object -ExpandProperty title
        device_status = $_.sideindicator
    }
}

解决方法2:使用字符串格式的过滤器

将-Filter写成字符串形式,通过变量插值传递用户名:

Compare-Object -ReferenceObject $users.name -DifferenceObject $results.user | foreach {
    $_.sideindicator = $_.sideindicator -replace "<=","No assigned device"
    [PSCustomObject]@{
        user = $_.inputobject
        title = Get-ADUser -Filter "name -like '$($_.inputobject)'" -Properties title | Select-Object -ExpandProperty title
        device_status = $_.sideindicator
    }
}

额外优化建议

  • 避免使用-Properties *,仅指定需要的title属性,减少AD查询的数据量,提升执行效率。
  • 用Select-Object -ExpandProperty title替代% title,代码语义更清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:01:09