Захват вывода команды на основе строки

253
James1984

Я нашел этот сценарий и пытаюсь использовать его для поиска учетной записи AD, выполняя поиск членов групп следующим образом:

ForEach ($Group in (Get-ADGroup -Filter * -searchbase "dc=acme,dc=local"))  {  $output = Get-ADGroupMember $Group | Select @},Name,SamAccountName } 

Я понятия не имею, как бы я поместил оператор if в этот код. Если есть лучший способ сделать то же самое, пожалуйста, сообщите. Основная цель состоит в том, чтобы найти в группах AD имя пользователя и вернуть имя группы, членом которой является указанный пользователь.

Спасибо

0
Ваш вопрос довольно расплывчатый; было бы лучше, если бы вы могли точно объяснить, чего вы хотите, чтобы *** if *** достиг. Еще лучше было бы предоставить псевдокод, иллюстрирующий вашу логику, который вполне может привести вас к собственному решению проблемы. Конвейер в PowerShell довольно мощный; однако это не главное и окончательное решение всех возможных проблем PowerShell. Jeff Zeitlin 5 лет назад 0
В настоящее время скрипт выводит имя группы и имя пользователя SamAccountName, я хотел бы найти в этих выходных данных имя учетной записи и вывести только имя группы, если указанный пользователь существует в этой группе. James1984 5 лет назад 0
Другими словами, вы хотите найти группы, в которых находится данный пользователь? Jeff Zeitlin 5 лет назад 0
Да, но мне нужно найти все возможные группы во всех доменах, чтобы получить их все. James1984 5 лет назад 0

1 ответ на вопрос

0
postanote

Похоже, вы новичок в сценариях PowerShell и ADDS. Очень важно, чтобы вы потратили некоторое время на просмотр всех бесплатных онлайн-тренингов и видео через…

Поиск начинающего PowerShell на

  • Виртуальная академия Microsoft
  • Виртуальные лаборатории TechNet
  • YouTube
  • MS Channel9

... для того, чтобы получить твердую основу. Кроме того, хотя и немного устарело, но все же рекомендуется, возьмите и используйте копию PowerShell в течение месяца обедов Дона Джонса.

Существует множество существующих примеров, даже полностью готовых сценариев того, как это сделать, по всей сети. MS PowerShellGallery должна быть вашей отправной точкой.

Get the group membership of a given AD group and return a user-specified list of attributes to a CSV file.  https://www.powershellgallery.com/packages/getADGroupMembershipWithProperties/1.1/DisplayScript 

Вы также можете напрямую использовать командлеты ADDS. Нет, если заявление требуется. Это показано во встроенном файле справки PowerShell через текст и примеры, приведенные в файлах справки. Это просто вопрос фильтрации по имени

Просто используя встроенный материал.

Clear-Host $TargetUsername = Read-Host -Prompt 'Enter a username' "Getting groups for user $TargetUsername" Get-ADPrincipalGroupMembership -Identity $TargetUsername |  Select-Object -Property @},SamAccountName |  Format-Table -AutoSize 

Если вы хотите получить вложенные группы, требуется больше кода. Встроенный командлет не показывает вложенные или косвенные группы.

Книга Дона Джонса была обновлена; название, которое нужно искать сейчас, должно быть *** Изучение сценариев PowerShell за месяц обедов *** и охватывает материал, который был в *** Изучение PowerShell за месяц обедов ***, *** Изучение PowerShell 3 за месяц обедов *** и *** Обучение изготовлению инструментов PowerShell за месяц обедов ***, а также обновления по крайней мере для PowerShell 4 и, возможно, PowerShell 5. Я не верю, что он охватывает PowerShell 6 / PowerShell Core пока нет. Jeff Zeitlin 5 лет назад 0
Ну, это действительно случается, но с тех пор, как я получил мое время назад, ну, вы знаете. postanote 5 лет назад 0
Не был задуман как критика, просто информационный ... :) Jeff Zeitlin 5 лет назад 0
8 ^} и не был принят таким образом. postanote 5 лет назад 0