PowerShell - 对计算机对象的"说明 AD "属性使用对象中的字符串



我正在尝试将用户名(SamAccountName(发送到PowerShell管道中,以根据Active Directory中的"描述"属性查找计算机:

"说明"属性始终为"某物-用户名">

我知道我不需要将变量发送到管道中,并且可以简单地在过滤器中表达它,但我有需要这样做的特定用例。

这是我尝试过的:

"bloggsJ" | %{Get-ADComputer -server domain.com -Filter * -Properties Description | ?{$_.Description -eq "something-$_"}} | select Name 

即使该域上有一台描述属性为"Something-bloggsJ"的计算机,也不会产生任何结果。

请提供任何建议。

我将使用-like而不是使用-eq运算符。

像这样:

"bloggsJ", "IanB" | ForEach-Object {
$name = $_
Get-ADComputer -Filter * -Properties Description | 
Where-Object {$_.Description -like "*-$name"}
} | Select-Object Name

在 ForEach-Object 循环中,$_自动变量是用户名之一。在 Where-Object 子句中,这个$_变量表示一个 ADComputer 对象,因此为了获得创建类似字符串的用户名,您需要在输入 Where-Object 子句之前捕获该名称。

我相信你错过了$_变量的下划线:

"ivan" | ForEach-Object -Process { Get-ADComputer -Filter * -properties description | Where-Object -Property description -eq "something-$_"}

这个正在工作...

相关内容

最新更新