zadanie: trzeba zmienić grupy globalne na uniwersalne. zadanie o tyle nietrywialne, że grupa uniwersalna, nie może być członkiem grupy globalnej. a więc nie da się po prostu zaznaczyć wielu grup [czy też przelecieć skryptem] i zmienić ich w uniwersalne, bo posypią się błędy właśnie z takim opisem. trzeba najpierw znaleźć zagnieżdżenia i zmieniać typ ‘od dołu’.[swoją drogą, to wymuszenie w Exchange 2o1o+ z grupami uniwersalnymi jest pasqdny – właśnie z powodu tego, jak trzeba się napocić z konwersją i konsekwencjami w produkcji…]

klient ma bardzo złożoną strukturę grup więc żeby sobie trochę pomóc na szybko napisałem skrypt, który rekursywnie listuje memberof… i zatrzymałem się nad głupim problemem – jak ładnie wyświetlić poziomy zagnieżdżenia? trzeba na początq wstawić jakieś spacje. szybko znalazłem funkcję ‘padleft’ tylko… że nie chciała działać. krótki test typu:

echo "aaa".padlef(10)

wszystko działa. tymczasem w mojej funkcji nie chce… o co c’mon? chwilę mi zajęło zanim zwróciłem uwagę na drobny szczegół – liczba, jaką się podaje, to nie długość akapitu a długość finalnego ciągu, który chcemy uzyskać. w sumie to faktycznie – tak właśnie ma działać funkcja ‘pad’! nie ‘przesuwać o’ a ‘przesuwać do‘.

finalnie skrypt wygląda tak:

function groupDeps {
################################################################
#.Synopsis
#  shows group memebership with nesting to find all dependencies
#  helpfull i.e. before changing from Global to Universal
#.Parameter Identity
#  function is using ActiveDirectory module's get-AdGroup. Identity
#  may be group Identity name od DN.
################################################################
  param(
    [Parameter(Mandatory=$true)][string]$Identity,
    [int]$level=1 
  )
  import-module ActiveDirectory
  $grp=get-AdGroup -Identity $Identity -properties memberof
  $mofnr=$grp.memberof.count
  #echo "group is a member of $mofnr groups"
  if($mofnr -ne 0) {
    if($?) {
      $str="$($grp.name) is member of:"
      echo $str.padLeft($str.length+(($level-1)*4))
      $grp.memberof|%{
        $str="-> $_" ;
        echo $str.padLeft($str.length+($level*4))
        groupDeps $_ ($level+1)
      }
    } else {
      echo $error
    }
  }
}

i jak zwykle najwięcej czasu poszło na pierdoły q:
eN.

Spread the love

Comments (1)

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Time limit is exhausted. Please reload CAPTCHA.