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ć.

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.

KRB i AES

W pewnym momencie na wszystkich W2k8R2 przestało działać podłączanie się do shareów na jednym z węzłów DFS. W dodatku nie działało tylko po nazwie DNS/NetBios. Chwila konsternacji i patrzymy do logów: w security pojawiają się wpisy Authentication Failed EventId 537:

Logon Failure:
     Reason:        An error occurred during logon
     User Name:   
     Domain:       
     Logon Type:    3
     Logon Process:    Kerberos
     Authentication Package:    Kerberos
     Workstation Name:    –
     Status code:    0xC000006D
     Substatus code:    0x8009030E
     Caller User Name:    –
     Caller Domain:    –
     Caller Logon ID:    –
     Caller Process ID:    –
     Transited Services:    –
     Source Network Address:    10.2.2.27
     Source Port:    0

Dziwne.. ogólnie wygląda jakby serwer nie rozumiał biletu, który dostaje. Szybkie zrobienie klist na R2 i widać, że próbuję dostać się do serwera z access ticketem zaszyfrowanym AES-256 (kontroler domeny, to 2k8R2). Zaraz zaraz… Przecież 2003 nie obsługuje szyfrowania AES. Szybkie przejrzenie KB i wygrzebanie czegoś takiego: http://support.microsoft.com/default.aspx/kb/961302 niby dotyczy klastrów, ale rozwiązanie się sprawdza. na klientów (2008+ i Vista+) nakładamy odpowiednie GPO i śmiga :)

Jeszcze jedna niepokojąca rzecz – drugim węzłem DFS jest 2k8R2, więc replikacja się wywala, bo partner nie może się uwierzytelnić do 2k3. po restarcie powinno zacząć śmigać, jak komputery dostaną nowe bilety.

Bardzo wolno działające RDP

Ostatnio przyjechał do nas projektor Dell 4610X – małe czarne pudełko z antenką wifi.

Działa to w ten sposób, że użytkownik łączy się za pomocą przeglądarki z urządzeniem, ściąga aplikacje, uruchamia … i już można prowadzić prezentacje wyświetlając jednocześnie obraz z 4 komputerów – fajnie….. fajnie by było… gdyby  nie to, że wpadliśmy z kumplem na pomysł  aby przetestować czy ta aplikacja będzie działać z maszyn w oddziale z innego miasta (oddziały połączone dedykowanym łączem, na brzegach ISA 2006) i czy nie trzeba będzie rzeźbić czegoś na firewallach.

Tak więc, za wiele nie myśląc, otworzyliśmy pierwszą lepszą aktywną sesję RDP z maszyną z innego miasta, uruchomiliśmy przeglądarkę, ściągnęliśmy soft, odpaliliśmy i …. świat zwolnił – praca po RDP przypominała pracę na modemie 56K z włączonymi wszystkimi wodotryskami.  Ekran odświeżany co kilkanaście sekund, reakcja myszki nie wiele szybsza. Mówiąc krótko – nie da się pracować.

Eeee – pomyśleliśmy – pewnie trafiliśmy akurat na jakiś pik, albo chłopaki po drugiej stronie akurat coś robią na serwerze. Spróbujmy na innym… a więc szybkie logowanie, przeglądarka, uruchomienie softu …. I kurde znowu to samo – wszystko zwalnia niemiłosiernie …  :/

 

Podsumowując: rozwalone dwa serwery produkcyjne w niewiele ponad 2 minuty – myślę, że to całkiem niezły wynik ;-)

 

No ale koniec śmiechów – trzeba to przecież jakoś naprawić.

 

Oczywiście próba odinstalowania aplikacji nic nie pomogła, wyczekiwane okienko czasowe  na  restart serwerów również. Fiaskiem skończyły się też telefony do supportu Dell’a i zaklinanie laleczki voodoo.

 

Dwa dni później, po postawieniu testowej wirtualki i prześledzeniu zmian jakie wprowadziła ta aplikacja do systemu doszedłem co jest grane. Przyczyną okazało się zmienienie poziomu akceleracji dla RDP Display Driver (RDPDD.DLL)  przez aplikacje z projektora Della, a dokładniej nie przywracanie jej wcześniejszego stanu po odinstalowaniu aplikacji .

 

Wartość tą ustawia się w rejestrze, w gałęzi:

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesRDPDDDevice0

 

Wystarczy zmienić wartość Acceleration.Level (DWORD) na 0

0 – Pełna akceleracja

5 – Brak akceleracji

 

To tyle, jedna mała aplikacja wycięła mi dwa dni życia.

 

Swoją drogą, to nie udało nam się podłączyć projektora między miastami, ale to wbrew pozorom temat na zupełnie inną opowieść.

 

Mały quiz na koniec: która z sytuacji, z opisanych w tej historyjce, nie powinna się nigdy wydarzyć i świadczy o niekompetencji adminów? ;-)

dodatki exchange 2k3 dla w7×64

trochę przewrotny tytuł ponieważ de facto nie udało mi się znaleźć rozszerzenia dla ADUaC na w7 x64… jest manager: http://www.microsoft.com/downloads/details.aspx?familyid=3403d74e-8942-421b-8738-b3664559e46f&displaylang=en który można zainstalować wymuszając z linii poleceń ‘msiexec /i ESMVISTA.MSI /qb+’ ale nie instaluje/nie działają [nie dochodziłem] uzupełnienia dla dsa.msc.

poza tym… kiedy próbuje zrobić to z interfejsu i tak dostaje acc denied – w końcu tym zajmują się ludki w centrali a ja powinienem im tylko przesyłac informacje komu mają założyć skrzynkę/zrobić skrzynkę mail-enabled. okazuje się, że te uprawnienia są wyłącznie do interfejsu, bo kiedy się pogrzebie w parametrach obiektu można zrobić większość operacji ręcznie – dodać alias, zmusić skrzynkę do mail-enabled etc. wystarczy ładnie uzupełnić pola obiektu:

  • .mail – wypełnia się normalnie z interfejsu dsa.msc
  • .mailNickName – właściwa nazwa usera używana przez Exchange. prefix emaila
  • .proxyAddresses – tutaj są wszystkie maile usera – a więc i aliasy. podstawowy powinien być zapisany dużymi literami: SMTP:user@email.addr a pozostałe małymi: smtp:user@different.addr

et voila! wcale nie dużo roboty. można sobie oskryptować i zapomnieć o interfejsie. to, czy exchange RUS dotknął obiektu będzie widoczne, ponieważ pojawią się dwa atrybuty – msExchALObjectVersion dbający o numer wersji RUS oraz msExchPoliciesIncluded – wskazujący na obiekt polisy dla obiektu.

eN.