我正在尝试编写一个脚本,该脚本将根据计算机的ID自动查找完整的资产标签。
例如:
PC ID为:PC0001
$computerID = PC0001;
但我需要的完整资产标签是:WKSPC0001
但是这些资产标签可能有不同的前缀,例如DSTPC0002,TBLPC0003等。但它们都有共同的模式:前缀+ PC + ID(ID是唯一的,没有重复)。
我试图弄清楚如何在PowerShell中编写查询,但我无法弄明白。我试过了:
$current = Get-ADComputer -Filter {Name -like "*$computerId.text"} |
Select -Property Name
但我遇到了让它发挥作用的问题。
我做错了什么?
答案 0 :(得分:3)
一些观察结果。
$computerId
成为字符串,因此$computerID = "PC0001";
Get-ADComputer -Filter "..."
"Name -like '$variable'"
会有用,但'Name -like "$variable"'
不会。.text
变量中没有$computerId
。这是一个简单的字符串。知道了,试试:
$current = Get-ADComputer -Filter "Name -like '*$computerId'"
其他说明
除非你真的必须,否则不要... | Select Name
。存储计算机对象本身将更加通用。您可以随时随地$current.Name
进行操作。
使用以通配符开头的过滤器查询AD 慢 。尽量避免。
如果您拥有固定数量的可能前缀,则以下LDAP filter会更快
$current = Get-ADComputer -LDAPFilter "(|(cn=WKS$computerId)(cn=DST$computerId)(cn=TBL$computerId))"