Powershell: Dodanie do listy select pewnej wartości stałej

14-Gru-2016

Mamy następującą sytuację. W AD jest sobie grupa HR. Członkiem tej grupy jest użyrkownik Johny Employer. Grupa ma ustawioną właściwość ManagedBy na innego użytkownika Johny Manager.

Chcielibyśmy dostać raport, w którym wyświetlimy nazwy wszystkich członków grupy HR, a obok nazwę managera (czyli osoby ustawionej dla grupy w polu ManagedBy.

Zaczynamy od znalezienia managera:

$manager = Get-ADGroup -filter {name -eq'hr'} -properties ManagedBy |
   Select -ExpandProperty ManagedBy |
      Get-ADUser |
         Select -expand name

Co się tu dzieje? Szukamy grupy HR, ale dodatkowo prosimy aby wynik zawierał właściwość ManagedBy. Zakładając, że grupę uda się znaleźć to nie interesuje nas nic poza właściwością ManagedBy, dlatego pobieramy tę właściwość zapominając o całej reszcie. Służy do tego parametr Expand, który „awansuje właściwość obiektu do rangi obiektu”. Mając namiar na managera pozostaje pobrać obiekt konta użytkownika i z niego pobrać tylko właściwość name, zapominając o całej reszcie, stąd ponownie opcja expand. Super. Nazwa użytkownika będącego managerem jest teraz w zmiennej $manager.

Teraz pora na wyświetlenie wyniku (omawiam to dokładnie w lekcji 35 naszego kursu Powershell dla administratora Windows):

Get-ADGroup "HR" |
   Get-ADGroupMember -Recursive |
      Select name, @{name='Manager';e={$manager}}

Zaczynamy od znalezienia grupy HR, następnie listujemy członków tej grupy i wreszcie w poleceniu select decydujemy co należy wyświetlić. A są to:

  • nazwa użytkownika z grupy
  • oraz nowa wyliczana właściwość o nazwie Manager i wartości takiej, jak zawartość zmiennej $manager.

Dodaj komentarz:

Autor: Rafał Kraik