获取adcomputer以识别筛选器中的变量的问题



下面是我正在使用的代码。我已经验证了初始导入csv是否正常工作,如果我为具体对象更改变量对象,脚本是否正常工作。它只是似乎没有按照应该的方式识别/使用变量。

$CSVOutput = "C:tempoutput.csv"
$Output = foreach($u in $userlastname)
{
Get-ADComputer -Filter {Description -Like '*$u*'} -properties Description | Select Name, Description
}
$Output | Export-Csv $CSVOutput

如果我用$userlastname变量中的一个值替换过滤器中的$u,它是有效的,但它只是用设置的值运行搜索的次数与运行foreach循环的次数一样多。我希望在描述中看到几个不同的计算机对象,它们的值与$userlastname不同。目前,它什么也不返回,就好像在描述字段中找不到匹配的值一样。

虽然从技术上讲,在ADC命令中可以使用脚本块作为过滤器,但不建议使用字符串:

Get-ADComputer -Filter "Description -like '*$($u.name)*'" -Properties ...

使用字符串可以解决变量替换问题。

ETA:注释表明您正在获取@{Name=User}作为筛选器表达式中$u的扩展。这是因为$u是一个结构化的[PSCustomObject],您正在从该对象中查找单个字段。获取对象所需字段值的最简单方法是简单地使用PowerShell评估构造,如编辑后的答案中所示

最新更新