modyfikacja grup mailowych via powershell
q pamięci, odnośnie poprzedniego wpisu:
$searcher=[ADSISearcher]"LDAP://DC=domain,DC=name" $searcher.Filter="(&(ObjectClass=group)(name=STR*))" //wszyskie grupy zaczynajace sie na dany ciąg $searcher.SearchRoot="OU=mail groups,OU=my ou,DC=domain,DC=name" $res=$searcher.FindAll() foreach ($r in $res) { $grp=[ADSI]$r.path; $grp.mail="$($grp.mailnickname)@domain.name"; $grp.putex(2,"proxyAddresses",@("SMTP:$($grp.mailnickname)@domain.name")); $grp.setinfo() }
POWERSHELL RLZ! q:
*UPDATE
zostałem poproszony o małe wyjaśnienia niniejszym jakie ciekawostki można wyłapać dla początqjących. samych poleceń ADSI nie będę wyjaśniał, sqpię się na składni PS.
jednym z podstawowych problemów na początq sprawiają najprostsze rzeczy – np. wypisywanie na ekran. z punktu widzenia składni najciekawsze polecenie to “$grp.putex(2,"proxyAddresses",@("SMTP:$($grp.mailnickname)@domain.name"));”. postaram się wyjaśnić co tu się dzieje.
wypisanie zmiennej na ekran jest proste:
echo $zm
ale przy dwóch już robi się dziwnie, ponieważ:
echo $zm1 $zm2
wypisze obie.. ale w oddzielnych liniach. znakiem konkatenacji jest niby ‘+’ ale dodanie
echo $zm1 + $zm2
spowoduje wypisanie 3ech linii – gdzie ‘+’ jest normalnym znakiem. odpowiedz jest dość prosta: wystarczy zamknąć zmienne w cudzysłowach:
echo “$zm1 $zm2”
można też zastosować zapis znany z c++:
echo (“{0} {1}” –f $zm1,$zm2)
ciekawie się robi, kiedy wartość ma być lub wartością atrybutu obiektu. PS po ‘$’ automatycznie kończy wyliczanie po pierwszym znaq specjalnym – np. kropka. w przedstawionym skrypcie wypisać należy wartość atrybutu ‘mailnickname’. wypisanie go w ten sposób:
echo “$grp.mailnickname”
wypisze $grp a na koniec doda ciąg “.mailnickname”. w związq z tym trzeba zadeklarować zmienną tymczasową, przyjmującą wartość wyliczaną:
echo “$($grp.mailnickname)”
trochę o ADSI musi być – ‘putex’ służy do ustawiania atrybutów wielowartościowych i przyjmuje 3 parametry. ten trzeci z nich to ostateczna wartość – zasady są dokładnie takie same jak przy wypisywaniu na ekran – przedstawione powyżej. dodatkowo, ponieważ atrybut jest wielowartościowy, musi to być tablica. stąd cała postać zmiennej przekazywanej do “putex” musi wyglądać tak:
@("SMTP:$($grp.mailnickname)@domain.name")
gdzie ‘@’ oznacza deklarację tablicy, potem jest ciąg, który zawiera jedną wartość wyliczaną: $($grp.mailnickname) . przykładowy output: [jednoelementowa tablica] “SMTP:nexor@domain.name”
eN.
Vmware server 2.0 i Unknown (Invalid)
Czasami się zdarza w vmware server 2.0, że po przeniesieniu wirtualnej maszyny z jednego komputera na inny, wyskakuje taki błąd przy próbie dodania jej do inventory:
Unknown (Invalid)
Przyczyną tego błędu jest to, że VM’ka została utworzona w systemie z ustawionymi lokalami na np. polski, i przeniesiona na system gdzie są ustawione inne lokale, np. angielskie
Wystarczy wtedy zmienić w plikach vmx (oraz vmsd) linijkę:
.encoding = „<tutaj kodowanie>”
Czyli np. .encoding = „windows-1252” na .encoding = „windows-1250”
Potem wystarczy tylko dodać ponownie VM’ke do inventory i powinno wszystko działać.