我正在尝试编写一个脚本,它将根据计算机的ID自动找到完整的资产标记。
例如:
PC ID是:PC0001
$computerID = PC0001;但是我需要的完整的资产标记是:WKSPC0001
但是这些资产标记可能有不同的前缀,例如DSTPC0002、TBLPC0003等,但它们都有共同的模式: Prefix+PC+ID ( ID是唯一的,没有重复)。
我正试图找出如何用PowerShell编写查询,但我想不出答案。我试过:
$current = Get-ADComputer -Filter {Name -like "*$computerId.text"} |
Select -Property Name但我有问题让它开始工作。
我做错了什么?
发布于 2018-05-23 21:05:11
一些观察。
$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是slow。尽量避免。
如果您有固定数量的可能前缀,那么像下面这样的LDAP过滤器会快得多:
$current = Get-ADComputer -LDAPFilter "(|(cn=WKS$computerId)(cn=DST$computerId)(cn=TBL$computerId))"https://stackoverflow.com/questions/50497247
复制相似问题