2017-01-27 6 views
0

Я пытаюсь написать скрипт Powershell, который позволяет мне сделать следующее:Powershell Active Directory Get-ADComputer Input

  1. Используйте Get-ADGroupMember, чтобы пользователи, которые помимо определенной группы
  2. Используйте информацию с первого шага в Get-ADUser, чтобы получить информацию о пользователе в формате lastname, firstname
  3. Используйте строку из шага 2 в Get-ADComputer для поиска в поле описания всех компьютеров, чтобы найти компьютеры, которые имеют эту строку в своем поле описания.

Вот что я пытался (думал, что это будет работать в моей голове):

Get-ADGroupMember 'Имя группы' | Get-ADUser -Properties givenName, sn | выберите givenName, sn | Get-ADComputer -filter 'описание-like "$ sn, $ givenName"' -образное описание | выберите Имя *

Жирные работает, я знаю Наклонный текст не будет работать, но тот формат, как я думаю, что это будет работать

Позвольте мне знать, если я сделал какое-нибудь так, определенно Powershell новичок

TLDR: пытаясь получить имена пользователей и их имя компьютера, основанный на поиске конкретных AD группы

ответ

1

в этот момент в трубопроводе, вы больше не непосредственно, используя выходной объект Get-ADUser в качестве объекта ввода от Get-ADComputer. Вот где ForEach-Object Командлет приходит Он принимает ScriptBlock, что позволяет Вам определить поведение каждого элемента в трубопроводе:.

Get-ADGroupMember 'Group Name' | 
    Get-ADUser -Properties givenName, sn | 
    ForEach-Object -Process { 
     $sn = $_.sn 
     $givenName = $_.givenName 

     Get-ADComputer -Filter 'description -like "$sn,$givenName"' -property description 
    } | select Name* 
+0

Спасибо за это. Тем не менее, я заметил, что я мог только заставить выше работать, вручную добавив известное значение в «$ sn, $ givenName». Например, я знаю одного пользователя в группе, поэтому я ставлю свою фамилию «LastName *». Это позволило команде работать, показывая только имя компьютера пользователя. Любые мысли о том, почему это не исключение $ sn и $ givenName? – Chris

+0

@ Крис не уверен, поскольку я фактически не запускал код против AD, но проверяю, чтобы ваши имена свойств были правильными. – briantist

+0

Хмм, мне придется в этом разобраться. Я добавил эхо-строку внутри ForEach (echo "$ sn, $ givenName"), и они печатаются правильно. К сожалению, когда они передаются в «$ sn, $ givenName *» (добавлен шаблон, чтобы увидеть, не изменилось ли это), ничего не найдено. Я дам вам знать, что, если я это выясню. Цените помощь – Chris