我正在尝试将用户名(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-$_"}
这个正在工作...