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.
hehe też się wtrącę, gdziekolwiek mogę coś powiedzieć coś złego na JAVA ;) … jak sie chce żeby aplikacje przełaziły przez ISA bez proxy, to trzeba doklikać w konfiguracji ISA Client wyjątek (bo sie oczywiście same nei zautoryzują, bo niby jak, z sustemu przecież nie wyciągną, bo kto ktoś zrobił nie w JAVA) … dla KAŻDEJ wersji osobno. A że wersji wyłazi kilka w roku, to lista jest już pokaźna ;(
W ogóle aplikacje JAVA i narzędzie do programowania w tym czymś jakoś zapominają, że są takie rzeczy jak korporacje, polisy, uprawnienia …. i mase innych “normalnych” ograniczeń. Nie mówiąc już o integracji z usługami MS … inny świat … tylko jakiś taki … gorszy :p
Stare powiedzenie - Mówić, że Java jest dobra, bo działa na każdej platformie, to tak jakby mówić, że seks analny jest dobry, bo dział z każdą płcią ;)