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.

-o((:: sprEad the l0ve ::))o-

Comments (2)

Skomentuj nExoR Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Time limit is exhausted. Please reload CAPTCHA.