Назад | Перейти на главную страницу

скрипт PowerShell get-ADGroup и get-ADGroupmember

У меня проблема с попыткой "исправить" сценарий PS, который я получил от коллеги, чтобы получить информацию от клиента AD. Я пытаюсь получить список всех почтовых ящиков распространения и их членов. Но сценарий, который он мне дал, не работает, я пытался кое-что изменить, но, поскольку я все еще изучаю PowerShell, я застрял и действительно не понимаю, что пытается сделать его сценарий.

Groups = Get-ADGroup -Filter * -SearchBase OU=costumer,OU=companies,DC=domene,DC=oss"

$Results = foreach( $Group in $Groups ){

Get-ADGroupMember -Identity $Group | foreach {

[pscustomobject]@{

        GroupName = $Group.Name

        Name = $_.Name

        }

    }

}
$Results| Export-Csv -Path c:\data\groups.csv -NoTypeInformation? -Encoding 
unicode

Когда я запускаю этот скрипт, я получаю сообщение об ошибке с самого начала из-за того, что "Группы =" не распознаются.

Итак, я изменил начало на:

Get-ADGroup -filter * -Searchbase "OU = Distribution, OU = Groups, OU = Costumer, OU = Companies, DC = Domene, DC = oss"

Это полный путь к нужным мне объектам AD, я протестировал это коммандос и получил полный список. Но я не получил информации о членах группировки. Я пробовал изменить нижнюю часть скрипта, но все время получаю сообщение об ошибке "-identity", неважно, что я напишу после этого.

Может ли кто-нибудь помочь med улучшить код, чтобы получить нужную мне информацию? А может быть, объясните, что пытается сделать этот скрипт?

Спасибо большое за помощь.

ИЗМЕНИТЬ 1

Спасибо вам за помощь! Теперь я запускаю сценарий и получаю файл .cvs. Но мне интересно, а что-то еще не так. Он должен вернуть группы в AD и членов групп, но результат, который я получаю, не такой. Я приложил снимок экрана с того момента, когда открываю это в Excel.

В моем сценарии чего-то еще не хватает для получения информации?

Решение

Я нашел способ изменить сценарий, чтобы он получил то, что мне нужно, и это сработало. Это может быть немного больше, чем просто получение информации, которая мне нужна, но я получил нужный результат. :) Спасибо!

$GruppeMedlemmer = @()

$Groups = Get-ADGroup -Filter * -properties * -SearchBase "ou=felles,OU=Groups,OU=costumer,OU=Companies,DC=domene,DC=oss"

foreach ($g in $Groups) {
$members = $g | Get-ADGroupMember 
     foreach ($m in $members) {
       $Info = New-Object psObject 
       $Info | add-member -MemberType NoteProperty -Name "GroupName" -Value $g.Name
       $Info | add-member -MemberType NoteProperty -Name "Description" -Value $g.description
       $Info | add-member -MemberType NoteProperty -Name "Member of" -Value $g.MemberOf
       $Info | Add-Member -MemberType NoteProperty -Name "Member" -Value $m.name
       $GruppeMedlemmer+= $Info
     }
  }

$GruppeMedlemmer | Sort-Object GroupName | Export-CSV C:\temp\groupdist.csv -notype -Encoding unicode  

Это должно работать:

$Groups = Get-ADGroup -Filter * -SearchBase "OU=dummy1,OU=dummy2,DC=dummy3,DC=dummy4"

$Results = foreach( $Group in $Groups ){

    Get-ADGroupMember -Identity $Group | foreach {

    [pscustomobject]@{
            GroupName = $Group.Name
            Name = $_.Name
            }
    }
 }
$Results| Export-Csv -Path c:\data\groups.csv -NoTypeInformation -Encoding unicode
  • В строке 1 отсутствует $
  • Отсутствует "в строке 1
  • Неправильно ? в строке 13
  • "Юникод" должен быть в той же строке, что и "Кодировка"

Убедитесь, что каталог C:\data существуют