Этот сценарий немного назад в отношении того, что ему нужно будет вернуть все группы, в которых пользователь входит. Я получил скрипт для работы, но он возвращает группы для первого пользователя в файле импорта и дублирует одни и те же группы для каждого дополнительного пользователя.Сценарий Powershell для возврата всех групп для списка пользователей из файла импорта
Пример того, что вход будет:
"NetworkID","DisplayName"
"jasonid",Jason
anotherid
"mikeid","Mens, Mike"
Я относительно новым для PowerShell (версия 2 с AD модуля), так что любая помощь будет оценена. Вот скрипт, который я создал:
$out = @()
Import-Csv "$env:userprofile\Desktop\ADUsers.txt" | SELECT NetworkID | ForEach {
$NetworkIDs = $_
ForEach ($NetworkID in $NetworkIDs)
{
ForEach ($group in $groups)
{
$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty -Name UserName -Value $NetworkIDs.NetworkID
$obj | Add-Member -MemberType NoteProperty -Name GroupName -Value $group.name
$out += $obj
}
}
}
$out | Format-table -AutoSize
$out | Export-Csv -path $env:userprofile\Desktop\ADUsers.csv –NoTypeInformation
Пример вывода будет:
"UserName","GroupName"
"jasonid","Domain Group 1"
"jasonid","Domain Group 2"
"jasonid","Domain Group 3"
"anotherid","Domain Group 1"
"anotherid","Domain Group 2"
"anotherid","Domain Group 3"
"mikeid","Domain Group 1"
"mikeid","Domain Group 2"
"mikeid","Domain Group 3"
Я 100% уверен, что «jasonid» является членом всех 3-х групп, «anotherid «не является членом« Группы домена 1 », а« mikeid »не является членом« Domain Group 3 ».
Это ближе к тому, чего я надеялся достичь. После нескольких ухищрений я смог получить выходный результат ближе к тому, что мне нужно, но я застрял с одной частью. Каков наилучший способ получить имя из GroupName? Результат выглядит примерно так: «CN = Citrix Users, OU = Global, OU = Groups, DC = mycompany, DC = com», но мне нужно что-то вроде этого: «Пользователи Citrix» – Jason
Это делается, но есть ли лучше путь? GroupName = $ group.SubString (3, $ group.IndexOf (",") - 3) – Jason
Обновлен ответ с регулярным выражением, которое должно делать то, что вы хотите, и будет немного более гибким, если группа или что-то имеет запятую во имя. Извините за медленный ответ, он был болен пару дней. – TheMadTechnician