2013-12-12 3 views
1

В настоящее время у меня есть:Powershell Get-adgroupmembership текстовый файл

import-module activedirectory 
$path = get-content "E:\test.txt" | Out-String 
$path | ForEach-Object { Get-ADGroupMember $_ | Select-Object name } 

Это получает имена (lastname_firstInitial) от пользователей в пределах группы, указанных в текстовом файле. Текстовый файл выглядит Somthing как:

groupname1 
groupname2 
... 
groupname50 

есть способ выводить полное имя пользователя недвижимости «DisplayName», получить-adgroupmember не поддерживает -property DisplayName или Firstname & фамилию - Я тоже нужно, чтобы имена появлялись рядом с правильной группой, из которой они были извлечены.

В настоящее время я могу получить только «имена входа», но не знаю, из какой группы они были извлечены.

спасибо.

Phil

ответ

2

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

$Filename = "C:\temp\groups.txt" 

#ForEach ($GroupName in [System.IO.File]::ReadLines($Filename)) { 
ForEach ($GroupName in (Get-Content $Filename)) { 
    $UserIDs = (Get-ADGroupMember $GroupName).ObjectGUID 

    ForEach ($UserID in $UserIDs) { 
      $ADUser = Get-ADUser $UserID -Properties DisplayName 
      Write-Output "$GroupName : $($ADUser.DisplayName)" 
    } 
} 
+1

Почему '[System.IO.File] :: ReadLines' over' get-content'? Если вы не имеете дело с очень большим файлом, разница незначительна – alroc

Смежные вопросы