Найти недостающий префикс для имени компьютера - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь написать скрипт, который автоматически найдет полный тег ресурса на основе идентификатора компьютера.

Например:

Идентификатор компьютера: PC0001

$computerID = PC0001;

Но мне нужен полный тег ресурса: WKSPC0001

Но эти теги активов могут иметь разные префиксы, например, DSTPC0002, TBLPC0003 и т. Д. Но все они имеют общий шаблон:Префикс + PC + ID (идентификатор уникален и повторений нет).

Я пытаюсь выяснить, как написать запрос для этого в PowerShell, но не могу понять.Я пытался:

$current = Get-ADComputer -Filter {Name -like "*$computerId.text"} |
           Select -Property Name

Но у меня были проблемы, чтобы заставить его работать.

Что я делаю не так?

1 Ответ

0 голосов
/ 24 мая 2018

Несколько замечаний.

  • Вы хотите, чтобы $computerId была строкой, поэтому $computerID = "PC0001";
  • Предполагается, что выражением фильтра для Get-ADComputer будет строка также , использовать фигурные скобки здесь неправильно.Так что Get-ADComputer -Filter "..."
  • Powershell может раскрывать значения переменных в строках, но делает это только в строках в двойных кавычках."Name -like '$variable'" будет работать, но 'Name -like "$variable"' не будет.
  • В вашей переменной $computerId нет .text.Это простая строка.

Зная это, попробуйте:

$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))"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...