Przechowywanie kluczy SSH programu PuTTY w KeePass

By aboo on Lipiec 31st, 2012

Powyżej wersji 0.60 klient SSH PuTTY posiada wsparcie dla tzw. agenta uwierzytelniania. Continue Reading

Exchange 2010 nie wysyła wiadomości Out of Office

By Łukasz Giemzik on Lipiec 31st, 2012

Problem z cyklu kuriozalnych awarii.
Exchange 2010 przestał generować odpowiedzi automatyczne (poza biurem) . W Outlooku 2010 nie pojawiały się również mail tipsy o nieobecności.
Nie było problemu z ustawieniem OOF poprzez Outlooka i OWA.
Pomocnym okazał się restart usługi Exchange Mailbox Assistants Services na serwerze mailboxowym.
Problem w zasadzie błahy , ale może komuś oszczedzi czas. Tym bardziej, że w googlach w przypadu podobnych problemów spotyka sie propozycje rekonfiguracji Autodiscover i EWSa.
Dlatego zanim zaczniemy od nowa konfigurować wszystkie ścieżki WebServices obsługiwane przez Exchange, najpierw spróbujmy zrestartować usługę Exchange Mailbox Assistants, być może dzięki temu zaoszczędzimy dużo czasu.

Rozwiązaniem dodatkowym może też być odmontowanie bazy i ponowne jej zamontowanie.

W przypadku środowiska DAG, wystarczy na chwilę zmienić aktywną bazę na inną umieszczoną na innym serwerze.


© lukg for ExchangeBlog, 2012. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , , ,

Feed enhanced by Better Feed from Ozh

powershell–uruchomienie exe z parametrem

By nExoR on Lipiec 31st, 2012

w całej ‘genialności’ projektanci PS zapomnieli o totalnie najprostszych rzeczach, które co-i-rusz wychodzą. bardzo chciałbym się pozbyć nawyq uruchamiania konsolki cmd ale do cholery… uruchomienie najprostszej instalki z parametrem bywa co najmniej uciążliwe.

w przeciwieństwie do starego ‘okienka DOS’ konsola PS próbuje interpretować cały ciąg jako instrukcję PS. i tak wpisanie:

costam param=1 –option 2 {otherParam:3}

w DOS spowoduje:

  • próbę odnalezienia polecenia ‘costam’
  • jeśli znaleziony – przekazanie całej reszty ciągu do obsłużenia przez ‘costam’

w PS natomiast sprawdzana jest składania całego polecenia. w win 8 jest powershell v3 gdzie pojawiło się specjalne oznaczenie:

--%

które mówi PS aby nie interpretować dalszej części linii. w starszych PS można albo łapać się prawą ręką za lewe ucho przekładając ją pod tyłkiem, albo po prostu odpalić cmd – np. ‘cmd /c polecenie’. dla chętnych do zabawy proszę najlepszy link jaki znalazłem: http://edgylogic.com/blog/powershell-and-external-commands-done-right/

a dodawanie wynalazków typu – – % może i działa i jest wyjściem, niemniej zaczyna przypominać wynalazki z cmd – gdzie zależnie od wykonania używało się coraz dziwaczniejszcyh figur i sztuczek. mam nadzieję, że nie doprowadzą do podobnego bałaganu…

eN.

Zupełnie nowe CodeTwo Exchange Rules 2007 i 2010!

By Gniewko Oblicki on Lipiec 31st, 2012

Tytuł mówi sam za siebie. Programy CodeTwo Exchange Rules 2007 i 2010 doczekały się największej jak do tej pory aktualizacji. I nie jest to zwykły update. Numery wersji zostały podniesione o jedno oczko na pierwszym miejscu, a aplikacje otrzymały potężny pakiet nowych funkcji. W zasadzie z pełną odpowiedzialnością możemy powiedzieć, że są to teraz zupełnie […]

Łódzka Grupa Profesjonalistów IT & .NET i jej plany na przyszłość

By Dariusz Porowski on Lipiec 30th, 2012

Rok 2008, październik… kilku geeków się spotkało przy piwie aby stworzyć nowy twór jakim jest grupa społecznościowa Microsoft w Łodzi. Udało się. 16 grudnia 2008 odbyło się pierwsze spotkanie! Grupa od początku była podzielona na 2 sekcje. IT Pro oraz Dev. Mnie przypadła przyjemność liderowania sekcją IT Pro natomiast Jakubowi Binkowskiemu sekcją Dev.

Oficjalnie od 1 sierpnia zmienia się pierwotny kształt. Po ~3,5 roku opiekowania się sekcją IT Pro przekazuję pałeczkę Łukaszowi Lisowskiemu, który do tej pory był Student Partnerem na UŁ.

Z tego powodu Łukaszowi życzę dalszych sukcesów związanych z prowadzeniem Grupy. Jestem bardzo zadowolony z tego co do dnia dzisiejszego udało się zrobić i mam nadzieję, że dalej będzie jeszcze lepiej!

Skąd taka decyzja? Jakiś czas temu na stałe przeprowadziłem się do Warszawy. Opiekowanie się lokalną grupa w Łodzi zdalnie mija się z cele Ii prowadzi do mniejszego zaangażowania w jej temat co jest destrukcyjne, a nie o to chodzi. Grupa musi się rozwijać i lokalny sprawny lider to podstawa!

Co ze mną? Nie uciekam ze społeczności… będę dalej w niej, ale w innej formie – szczegóły już niedługo

Strona grupy: http://www.wss.pl/grupy/Lodz

Jak zrealizować logowanie do sesji zdalnego pulpitu dla standardowego użytkownika

By Dariusz Porowski on Lipiec 30th, 2012

Pełna treść porady została opublikowana na portalu WSS.pl pod poniższym odnośnikiem: [Porada] Logowanie do sesji zdalnego pulpitu dla standardowego użytkownika

Windows Server 2012 – koniecznie spróbuj!

By Mariusz Kędziora on Lipiec 30th, 2012

Wewnętrzna konferencja Microsoft (TechReady 15) dobiegła końca i jedno co mnie, może nie zaskoczyło, ale na pewno zobrazowało kilka rzeczy, była liczba sesji dotycząca najnowszego produktu serwerowego Microsoft czyli Windows Server 2012.

To, że będzie ich sporo, to w sumie można było się domyślać, ale na miejscu przy układaniu harmonogramu naprawdę porażająca była liczba sesji gdzie np. na pojedynczą funkcjonalność poświęcano cała sesję albo nawet dwie (jak w wypadku Hyper-V). Widać, że to co zrobiła grupa produktowa Windows Server to kawał wielkiej, dobrej roboty – którą bardzo ciężko opowiedzieć, bo tyle tego jest.

Windows Server 2012

Aktualnie Windows Server 2012 jest dostępny w wersji Release Candidate (swoją drogą to jakieś dwa lata temu opisywałem czym są wersje Beta, CTP, RC, itp.), ale wersja RTM jest już coraz bliżej.

Powiem Wam, że po tej konferencji mam wielki problem teraz (w sumie to samo podkreślali ludzie z grupy produktowej), że będzie ekstremalnie ciężko powiedzieć Wam na MTS 2012 o Windows Server 2012 w ciągu 60 minut. Przy tym wszystkim, co zmienia się w nowej wersji, będzie to naprawdę trudne i planuję zacząć pracę nad prezentacją tuż po moim urlopie. Na szczęście na MTS znajdzie się jeszcze kilka sesji poszerzających kluczowe tematy serwera, więc ja się po nich tylko prześlizgnę :)

Jedną z ciekawszych rzeczy (o tym na pewno powiem) jest nowe licencjonowanie – aktualnie zostaną tylko 2 edycje serwera: Standard i Datacenter. Ale co jeszcze ciekawsze – są one w 100% takimi samymi wersjami, oferującymi dokładnie to samo z technicznego punktu widzenia (np. klastry w wersji Standard). Jedyna różnica będzie w licencjonowaniu maszyn wirtualnych, które możemy uruchomić na takim systemie. Więcej o tym na MTS :)

Spróbuj sam!

Chyba dla każdego specjalisty IT najlepszym sposobem na sprawdzenie nowych rozwiązań jest "zabawa" z nimi – czyli pobranie, instalacja i sprawdzenie na własnej skórze co tam jest nowego.

Ja zapraszam i bardzo zachęcam Was do tego – link do pobrania po kliknięciu na baner z prawej. Windows Server 2012 dostępny jest aktualnie w dwóch wersjach: albo jako czyste ISO (64-bit, Datacenter) albo jako gotowy plik VHD.

Swoją drogą to ciekawej rzeczy się dowiedziałem na TechReady (i to akurat jest publiczna informacja która chyba mi umknęła), że bardzo dużym testerem tego oprogramowania jest… Microsoft Bing. Gdy tylko zespół Binga dowiedział się co Windows Server 2012 potrafi koniecznie chcieli go przetestować.

Okazało się, że testy poszły tak dobrze, że aktualnie wszystkie serwery front-end działają właśnie na Windows Server 2012 (tak, w wersji RC!!!). Wyobrażacie to sobie – jedna z największych infrastruktur w swoim środowisku produkcyjnym ma wersję RC i jest z niej ekstremalnie zadowolona :)

A może odpalisz to w Azure?

Nie wiem też czy wiecie, ale od czerwca w Windows Azure (czyli przypomnę – naszej publicznej chmurze) dostępna jest bardzo ciekawa opcja o nazwie Virtual Machines.

Virtual Machines to nasza implementacja chmury typu IaaS (o rodzajach chmur też już kiedyś pisałem), gdzie w ciągu kliku minut możemy uruchomić w pełni działający system, dostępny z dowolnego miejsca na świecie.

O samych Windows Azure Virtual Machines też pisałem nie tak dawno. Teraz tylko chciałbym przypomnieć, że każdy z Was może przez 30 dni testować Azure za darmo – co za tym idzie – też w kilka minut możecie uruchomić Windows Server 2012 w chmurze.

Po prawej mój serwer dostępny w chmurze, na którym ostatnio ćwiczę sobie kilka rzeczy :) Was również bardzo mocno zachęcam do testów – czy to lokalnie czy w chmurze!

I mogę pomału chyba też zdradzić, że w drugiej edycji akcji vGuru.pl pojawi się wiele materiałów i szkoleń z zakresu właśnie Windows Server 2012 :) Tak czy inaczej pobrane ISO czy VHD na pewno się przyda!

Exchange Administration Center co znajdziemy w środku

By Remigiusz Szatkowski on Lipiec 30th, 2012

Konsolę Web-ową Exchange Administration Center dostępną w Microsoft Exchange 2013 Preview możemy uruchomić wpisując w przeglądarce adres serwera Exchange: https://serwer/ecp

Następnie w oknie jak poniżej logujemy się do konsoli

 

Po uruchomieniu konsoli możemy znaleźć w niej takie sekcje jak:
(…)
Read the rest of Exchange Administration Center co znajdziemy w środku (34 words)


© Remigiusz Szatkowski for ExchangeBlog, 2012. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , ,

Feed enhanced by Better Feed from Ozh

Mała funkcja, a cieszy!

By Kamil Skalski on Lipiec 29th, 2012

Kilka ostatnich postów przedstawiało nowe role i funkcje Windows Server 2012 – dzisiaj w ramach Niedzielnego relaksu od „ciężkiej” technologii chciałbym wspomnieć o innej nowości. Gdy zmienimy konfigurację obiektów GPO (Group Policy Object) ich wprowadzenie wymaga odczekania odpowiedniej ilości czasu (w zależności od wersji systemu) lub wykonania  polecenia gpupdate /force – a co jeśli stacja jest poza naszym zasięgiem? …tak możemy użyć zdalnych narzędzi, wywołać to polecenie programem psexec lub użyć winrs (Windows Remote Shell) itd.

Continue Reading

BUG w LCD :)

By coltuszyk on Lipiec 28th, 2012

Lato to zdecydowanie nie jest czas na spędzanie czasu przed komputerem. Pogoda jest cudna, na dworze ciepło, słońce w pełni, a ja przed chwilą wróciłem ze spaceru. Odpaliłem sprzęt by sprawdzić pocztę i ewentualnie poklikać trochę na necie, a tu po ekranie “pomyka” mi jakieś małe “coś”, którego (dość niewyraźną fotkę) można zobaczyć poniżej:

Jak to zwykle bywa w tego typu przypadkach – stwierdziłem, że “to coś” unicestwię i zajmę się przeglądaniem poczty. W tym momencie poczułem pierwsze zaskoczenie:

To nie jest nic NA MONITORZE !!!

Stwierdziłem, że może ślepnę i po prostu jest to jakiś dziwny program – żart, wirus albo inny soft, którego na pewno nie chciałem na moim komputerze. Od kilku lat już nie miałem żadnego wirusa, ale cóż … zdarza się

No, niestety NIE JEST TO WIRUS !!!

Odłączyłem monitor od komputera i “to coś” nadal tam jest. Gdyby nie fakt, że się przemieszcza, to uznałbym to za jakiś wadliwy piksel. Spytałem googla:

W tym momencie okazało się z czym dokładnie mam do czynienia.

Jest gatunek robaka, który żyje w LCD !!!

W życiu bym nie przypuszczał, że takie coś jest możliwe. Inną sprawą jest fakt, że raczej się nad tym nie zastanawiałem. Mimo wszystko jest zaskoczenie. Co więcej z jednej strony nauczyłem się czegoś nowego … ale z drugiej … dostałem doła …

W domu raczej posprzątane, monitor czyszczę raz na tydzień, żona mówiła mi, że mam poodkurzać, ale żeby od razu robal w LCD … Trochę niefart

Dla zainteresowanych link do opisu robaka z wikipedii:

http://pl.wikipedia.org/wiki/Wciornastki


Q&A: bezpieczeństwo WiFi

By Paweł Goleń on Lipiec 28th, 2012

Czasami ktoś się coś o mnie pyta. Tym razem dostałem od Mateusza następujące pytanie (fragment):

Podłaczając się do sieci wi-fi (budżetowy, domowy routerek np. D-Link, Linksys). Czy jest możliwe podsłuchanie ruchu https? Rozumiem, że można przeprowadzić atak ARP Spoofing, ale w takim przypadky przy wejściu na stronę zabezpieczoną https, otrzymam komunikat o ‚problemie’ z certyfikatem. A czy istnieją sztuczki, które pozwolą taki ruch (https) przechwycić i odczytać zawartość, bez powiadamiania użytkownika o problemie z certyfikatem?

Tu są co najmniej dwa tematy. Bezpieczeństwo wifi i bezpieczeństwo HTTPS.

Trochę o WiFi

Jeśli chodzi o wifi, to niezależnie od tego, czy jest to publiczny hotspot, czy też nasz własny AP, proponuję przyjąć założenie, że ktoś może słuchać. Nawet więcej – załóżmy, że nasz intruz jest w stanie przeprowadzić atak aktywny, dlaczego ma się ograniczać wyłącznie do ataku pasywnego? W pytaniu wspomniany jest ARP Spoofing, ale równie dobrze może to być „podstawiony” serwer DHCP, który poda podłączającemu się urządzeniu delikatnie zmodyfikowaną konfigurację sieci, na przykład „własny” serwer DNS, inną adresację i routing, konfigurację serwera proxy (przez WPAD, patrz: Czy WPAD może się przydać malware?).

Tu pozwolę sobie na małą dygresję. Szczerze mówiąc nie przywiązuję wielkiej uwagi do tego, jak moje dane są przekazywane między moim komputerem i pierwszym urządzeniem w sieci. Po prostu zwykle nie wiem jak moje pakiety są traktowane na kolejnych hopach. To, że moje WiFi jest dobrze zabezpieczone wcale nie znaczy, że będąc podłączonym do tej sieci mogę się bezpiecznie logować do jakichś usług z wykorzystaniem HTTP, a jak jestem w innej (publicznej) sieci, korzystam tylko z HTTPS.

Można iść dalej z tą paranoją, a bliżej jeśli chodzi o topologię sieci. Ostatnio pisałem o wykorzystaniu iSCSI w przypadku domowego NAS. Akurat w tym konkretnym przypadku korzystałem z kabla (jednak jest to szybsze, niż WiFi), ale w ogólnym przypadku można spodziewać się, że dostęp do NAS odbywa się po WiFi. Nie do końca jest ważne z wykorzystaniem jakiego protokołu NAS udostępnia swoje zasoby (iSCSI, CIFS, FTP) – zawartość przesyłanych plików podróżuje sobie w formie jawnej. Można co prawda spróbować skonfigurować dodatkowo IPSec, oczywiście o ile posiadany NAS taką funkcję wspiera.

Co prawda jeśli korzysta się z WPA2, sieć ma mocne hasło a jej nazwa jest niestandardowa (nazwa sieci pełni rolę soli przy przekształcaniu hasła, dla WiFi też są rainbow tables), szansa na to, że ktoś obcy dostanie się do naszej sieci jest niewielka. Czasami jednak trafiają się takie kwiatki: Miliony domowych routerów Wi-Fi podatnych na atak.

Jeśli ktoś myśli, że wprowadzenie filtrowania po adresach MAC podnosi bezpieczeństwo, jest w błędzie. Adres MAC można zmienić, nie nadaje się więc on jako cecha klienta, którą można wykorzystać do potwierdzenia jego autentyczności. Zamiast tego można skorzystać z 802.1x, o ile nasz AP na to pozwala, ale to już trochę inny temat.

Trochę o HTTPS (SSL)

Załóżmy teraz, że już w naszej (nie koniecznie bezprzewodowej) sieci mamy intruza, który może nas nie tylko podsłuchiwać, ale również aktywnie ingerować w ruch. Czy SSL może nam tutaj pomóc? W pewnym stopniu tak, bo:

  • możliwa jest weryfikacja tożsamości/autentyczności serwera,
  • poufność i integralność komunikacji jest chroniona,

SSL jest skomplikowanym protokołem i przy jego wykorzystaniu można popełnić wiele błędów, które bezpieczeństwo całego rozwiązania obniżą. Na przykład:

  • wykorzystanie słabych szyfrów symetrycznych,
  • wykorzystanie krótkich kluczy (kryptografia asymetryczna),
  • wykorzystanie nieprawidłowego certyfikatu (np. certyfikatu self-signed),
  • brak weryfikacji certyfikatu serwera przez klienta,

Czy można w jakiś sposób podsłuchać komunikację HTTPS w taki sposób, by użytkownik nie był tego świadomy? Oczywiście, na kilka sposobów.

Pierwsze pytanie – po co mam się męczyć i próbować podsłuchiwać ruch HTTPS, skoro mogę przekonać użytkownika, by zamiast tego skorzystał ze zwykłego HTTP? Tak robi na przykład sslstrip. Różnica w GUI przeglądarki między połączeniem HTTPS i HTTP może być dla użytkownika mniej zauważalna, niż komunikat o nieprawidłowym certyfikacie. I nie, taki atak wcale nie jest możliwy tylko wtedy, gdy serwis jest dostępny również po HTTP. Pamiętajmy, że atakujący jest „w środku”, więc dla swojej ofiary może wystawić wersję HTTP serwisu, do właściwego serwera atakujący odwoływać się będzie już z wykorzystaniem HTTPS.

Jednym z potencjalnych rozwiązań tego problemu jest nagłówek HTTP Strict Transport Security, który mówi przeglądarce, że dana strona powinna być oglądana wyłącznie z wykorzystaniem HTTPS, przynajmniej przez określony, podany w nagłówku, czas. Trzeba tylko pamiętać, że to ma szansę zadziałać tylko wtedy, gdy przed atakiem klient był na tej stronie. No, prawie. Jest jeszcze coś takiego jak HSTS preloading, ale to już jest cecha przeglądarki.

Kolejnym problemem jest zachowanie urzędów certyfikacji, które dość dobrze opisane jest tutaj: Trustwave announces name change: henceforth will simply be ‚Wave’ . Ogólnie chodzi o to, by zdobyć certyfikat, który przez przeglądarkę klienta zostanie uznany za prawidłowy. Można to zrobić na przykład przez:

  • uzyskanie certyfikatu, z którego wykorzystaniem można wystawiać kolejne certyfikaty, od zaufanego CA,
  • „wstrzyknięcie” zaufanego certyfikatu do przeglądarki użytkownika (np. z użyciem malware),

Tu przy okazji warto wspomnieć o Public key pinning. W tym wypadku atakującemu nie wystarczy posiadania certyfikatu, który powinien się zweryfikować poprawnie w przeglądarce ofiary. Przeglądarka ofiary sprawdzi jeszcze, czy certyfikat ten jest zgodny z tym certyfikatem, którego się spodziewała. To tak, jak było w przypadku SSH i key fingerprints, choć tam akurat całej otoczki PKI nie było (przynajmniej w typowym przypadku).

Ten fragment bynajmniej nie wyczerpuje tematu. Atakujący może próbować, że certyfikat jest prawidłowy, również na inne sposoby. Tak robił ostatnimi czasy między innymi słynny Flame: Flame, certificates, collisions. Oh my., Flame malware collision attack explained.

Trochę jeszcze o czym innym

Wcale nie jest powiedziane, że atakujący musi atakować ruch sieciowy, by widzieć co jest w środku. Może zaatakować aplikację. Dobrze nadaje się do tego XSS, a jego wprowadzenie przez atakującego może być możliwe przez:

  • atak bezpośrednio na aplikację (np. jakiś stored XSS),
  • atak na użytkownika (np. jakiś reflected XSS i odrobina socjotechniki),
  • atak na zewnętrzny komponent, z którego korzysta aplikacja,

Ten ostatni przypadek jest dość interesujący. Pamiętajmy, że obecnie aplikacje webowe to często mieszanina różnych komponentów pochodzących z różnych źródeł (skrypty statystyk, gadżety społecznościowe, itp.). Zgodnie z Transport Layer Protection Cheat Sheet nie należy mieszać ze sobą treści pobieranych po HTTP i HTTPS (patrz: 2.5.5 Rule – Do Not Mix TLS and Non-TLS Content). Jeśli jednak jakikolwiek „gadżet” pobierany jest przez HTTP, atakujący w trywialny sposób może go zmodyfikować i wstrzyknąć tam swój kod. Ten scenariusz ma jednak pewien słaby punkt – przeglądarki ostrzegają użytkownika, że część zasobów na stronie jest pobierana po HTTP i domyślnie nie są one używane. Oczywiście użytkownik może się na to zgodzić… Atakujący może też zaatakować te serwery, z których dane są pobierane. W tym wypadku bezpieczeństwo samej komunikacji nie ma znaczenia.

I na zakończenie…

Na zakończenie zostawiłem sobie XSS ChEF. Jeśli atakującemu uda się wyeksploitować jakieś rozszerzenie w przeglądarce ofiary, to już nie będzie jej przeglądarka.

Proponuję pooglądać sobie filmiki demonstrujące możliwości XSS ChEF. To, czy otwarta przez ofiarę strona została dostarczona przez HTTP czy HTTPS nie ma już większego znaczenia… Samo „zainfekowanie” podatnego rozszerzenia można zrealizować w sposób niezauważalny dla użytkownika…

To jaka jest odpowiedź na pytanie:

A czy istnieją sztuczki, które pozwolą taki ruch (https) przechwycić i odczytać zawartość, bez powiadamiania użytkownika o problemie z certyfikatem?

Nie rozpisując się za bardzo, odpowiedź brzmi: oczywiście, że tak. Bój się!

Outlook 2013 Preview Update (KB2737132) rozwiązanie problemu usuwania emaili

By Remigiusz Szatkowski on Lipiec 28th, 2012

Dla Microsoft Outlook 2013 wydana została poprawka naprawiająca pojawiający się problem podczas pracy z narzędziem Cleanup Tools.

W momencie kiedy w Outlooku 2013 mamy podpiętą skrzynę z serwera Exchange w trybie online i wybierzemy opróżnienie kosza lub uruchomimy Cleanup Tools, traciliśmy wszystkie emaile, wpisy w kalendarzu oraz kontakty bezpowrotnie. Outlook usuwał wszystko nie tylko z Elementów Usuniętych ale również z innych folderów.

Poprawka ta powstała dzięki wielu zgłoszeniom użytkowników, których spotkał ten problem. Jak wiadomo jest to dopiero wersja Preview i każdy z nas ma możliwość uczestniczyć w jej poprawianiu poprzez wybranie ikonki w prawym górnym roku (usmiechnięta buźka lub smutna), następnie możemy przekazać swoje uwagi odnośnie działania Outlooka 2013.

Aktualizacje możemy pobrać z poniższych linków:


© Remigiusz Szatkowski for ExchangeBlog, 2012. |
Permalink |
No comment |
Add to
del.icio.us

Post tags: , , ,

Feed enhanced by Better Feed from Ozh

Migracja Offline Files i Sync Center na inny serwer

By ml on Lipiec 27th, 2012

Upalny dzień w Belgii. Taki oksymoron chciałoby się rzec. Zawsze ten kraj kojarzył mi się z krainą deszczowców. Zaskoczyłem się wiec jego całkiem przyzwoitą aurą. Szkoda jedynie, że mogę ją podziwiać przez podgląd z kamer CCTV w jednej z tamtejszych serwerowni. Zawsze taka sytuacja przypomina mi stare żydowskie przekleństwo – Żebyś po wodzie chodził i pić prosił.

Dość jednak tego marudzenia, zważywszy, że wieczory przepełnione są hektolitrami belgijskiego piwa to niema, tak naprawdę, na co narzekać. Można nawet powiedzieć, że dzielę traumę polskiej emigracji za chlebem – tragizm sytuacji bycia gdzieś a zarazem oglądania tego przez szybkę… Koniec jednak tych rzewnych psalmów… tak naprawdę chodziło mi o to, że kolejna migracja ciągnęła się godzinami, a ja zanurzyłem się w marzeniach o słońcu, które tak radośnie ogrzewało grządki klika metrów nade mną.

Zetknąłem się z problemem migracji Microsoftowego mechanizmu Offline Files. Byłem bardzo zdziwiony, że ktoś tego używa i mu to działa! Gdziekolwiek, bowiem się z nim nie stykałem administratorzy byli uradowani, że przy okazji migracji mogą z niego zrezygnować. Ten przypadek był nieco inny – wszystko działało wyśmienicie. Sync Center pokazywał wszystko prawidło, użytkownicy prawym przyciskiem mogli synchronizować i odtwarzać swoje pliki… aż miło było popatrzeć.

Byłem najeźdźcą w tej krainie wiecznej szczęśliwości. Najeźdźcą, który nie miał spalić jej do cna i wygarbować skóry biednych użytkowników a pozostawić ja vm’ką budowaną… dodatkowo dbając by wszystkie dotychczas wyśmienicie działające mechanizmy po jej przebudowaniu chodziły z równą szwajcarską precyzją.

Przenoszenie mechanizmu Offline Files z jednego serwera docelowego na drugi wiąże się z wyjaśnieniem dla każdego komputera klienckiego, że synchronizacja ma się odbywać na nową lokalizację. Najłatwiej to rozwiązać skryptem położonym w NETLOGON. Można oczywiście wybrać drogę Shivy i robić wszystko ręcznie, ale do mnie to jakoś nie przemawiało przy prawie 600 pecetach. Postanowiłem wiec poszukać jakiegoś gotowego rozwiązania, które oszczędziłoby mi ponownego wynajdowania kola. Opłacało się – istnieje gotowy skrypt do zmiany serwera w wewnętrznych metadanych mechanizmu Offline Files.

Celem wykonania niezbędnych zmian w naszym skrypcie logowanie znajdującym się w folderze NETLOGON dopisujemy linijkę:

objapp.run „\\dc01.corp.cmantarnapolka.pl\netlogon\OU_BANGLADESZ\cscrenameitem.vbs /OldItemPath:\\stary.corp.cmantarnapolka.pl /NewItemPath:\\nowy.corp.cmantarnapolka.pl „,0,false

Linijka ta odnosi się do pliku skryptu cscrenameitem.vbs, który umieściliśmy w lokalizacji \\dc01.corp.cmantarnapolka.pl\netlogon\OU_BANGLADESZ\. Należy oczywiście to dostosować do swoich potrzeb. Skrypt natomiast można pobrać z http://blogs.technet.com/b/filecab/archive/2007/03/29/cscrenameitem-vbs.aspx. Lub przekleić:


‚ THIS CODE AND INFORMATION IS PROVIDED „AS IS” WITHOUT WARRANTY OF
‚ ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
‚ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
‚ PARTICULAR PURPOSE.

‚ Copyright (c) Microsoft Corporation. All rights reserved.


‚ Usage: CscRenameItem.vbs /OldItemPath:<path> /NewItemPath:<path> [/Machine:value] [/User:value] [/Password:value]


‚ Demonstrates how to rename an item in the Ofline Files cache.

‚ OldItemPath – UNC path of the current path to be renamed.

‚ NewItemPath – UNC path of the new path to replace the old path.

‚ If NewItemPath already exists, the operation is not performed.
‚ This operation simply schedules a rename to be performed on the next restart
‚ restart of the system.

const cComputerName = „LocalHost”
const cWMINamespace = „root\cimv2″
const cWMIClass = „Win32_OfflineFilesCache”

‚ Process commandline arguments

strOldItemPath = WScript.Arguments.Named(„OldItemPath”)’
if Len(strOldItemPath) = 0 Then
Wscript.Echo „OldItemPath parameter required”
Err.Raise 449 ‚ „argument not optional” error
End if
strNewItemPath = WScript.Arguments.Named(„NewItemPath”)’
if Len(strNewItemPath) = 0 Then
Wscript.Echo „NewItemPath parameter required”
Err.Raise 449 ‚ „argument not optional” error
End if
strComputerName = WScript.Arguments.Named(„Machine”)
If Len(strComputerName) = 0 Then strComputerName = cComputerName
strUserID = WScript.Arguments.Named(„User”)
If Len(strUserID) = 0 Then strUserID = „”
strPassword = WScript.Arguments.Named(„Password”)
If Len(strPassword) = 0 Then strPassword = „”
set objWMILocator = WScript.CreateObject(„WbemScripting.SWbemLocator”)
Set objWMIServices = objWMILocator.ConnectServer(strComputerName, _
cWMINameSpace, _
strUserID, _
strPassword)

‚ Note that Win32_OfflineFilesCache is a singleton.

‚ Also note that while we pass „False” for the bReplace parameter, that
‚ parameter is ignored. Existing destinations are never replaced, regardless
‚ of what we pass for the 3rd parameter.

Set objCache = objWMIServices.Get(„Win32_OfflineFilesCache=@”)
objCache.RenameItem strOldItemPath, strNewItemPath, False
WScript.Echo „item rename scheduled. A restart of the system is necessary to apply the change.”

Po zapisaniu należy się wylogować i zalogować ponownie, oraz co NAJWAŻNIEJSZE zrestartować komputer. Musimy to zrobić, inaczej zmiana będzie dokonana, ale nie wejdzie w życie. Jakie to niesie konsekwencje dla użytkowników? Dosyć nieprzyjemne. Jeżeli wykonamy skrypt (poprzez logowanie, lub bezpośrednio), ale nie wykonamy restartu możemy doprowadzić do uszkodzenia bazy danych Sync Center. Doprowadzić do tego można bardzo łatwo. Opiszę to w kliku, bardzo prawdopodobnych krokach – po uruchomieniu skryptu udajemy się do naszego katalogu, który powinien być oznaczony, jako offline, zauważamy, że nie jest, wiec bezmyślnie klikamy na niego i robimy go offline. Gotowe. W taki oto sposób uszkadzamy bazę Sync Center i nadaje się ona do całkowitego wykasowania. Wiec zaznaczam jeszcze raz – restart. Po restarcie wszystko działa bez zarzutu.

Ps. Powyższy skrypt przetestowałem na XP, Viscie i Windows 7. Work like charm!

Symlink okiem PowerShella

By Michał Gajda on Lipiec 27th, 2012

Postaram się zaprezentować pewne rozwiązanie, wiem może i stare, ale ostatnio byłem zmuszony go użyć w kilku kryzysowych sytuacjach. Stare dlatego, iż stało się ono popularne już w czasach wypuszczenia na rynek systemu Windows Server 2008 szczególnie w wersji Core. By nie trzymać dłużej w niepewności to mam tutaj na myśli dowiązania – zarówno twarde jak i miękkie. Dowiązania same w sobie zostały bardzo ciekawie opisane przez Paulę Januszkiewicz w artykule „Symlink, czyli MKLINK w Windows Server 2008”, więc o teorii nie będę się rozwodził. Pominę również kwestię omawiania narzędzia mklink, gdyż nie zamierzam przepisywać plików pomocy. W artykule tym nawiążę jedynie do pewnych alternatywnych metod wykorzystywania dowiązań z poziomu PowerShell’a.Na wstępie dla leniwych polecam gotowy pakiet PowerShell Community Extensions, która sama w sobie zawiera zestaw cmdletów do tworzenia „linków”. Ciekawskim jednak polecam zbadać sprawę od podszewki.

Całe rozwiązanie w głównej mierze opiera się o bibliotekę kernel32.dll, dzięki której możemy wykorzystać m.in. takie metody jak CreateHardLink czy CreateSymbolicLink.

Zacznijmy od dowiązań twardych. Jak wiemy z teorii jest to bezpośrednie wskazanie na konkretny plik. Aby jednak go stworzyć z poziomu PowerShella konieczne jest odwołanie się do biblioteki kernel32 wraz z wykorzystaniem funkcji CreateHardLink, jak np.:

$Definition = @'
[DllImport("kernel32.dll")]
	public static extern int CreateHardLink(
	string lpFileName,
	string lpExistingFileName,
	IntPtr lpSecurityAttributes);
'@

Wg dokumentacji funkcji CreateHardLink pierwszy parametr to nazwa nowego pliku będącego dowiązaniem. Drugi parametr to istniejący plik, do którego będziemy robić dowiązanie. Natomiast trzeci parametr pozostaje zarezerwowany dla systemu dlatego posiada wartość Null lub w naszym przypadku 0.

Jak widzimy sam kod pochodzi z języka C#, dlatego by wykorzystać go PowerShellu musimy zdefiniować go jako nowy typ w istniejącej sesji. Ostatecznie funkcję wywołujemy z wykorzystaniem operatora podwójnego dwukropka „::” – to wszystko :)

$type = Add-Type -MemberDefinition $Definition -Name WindowsAPI -PassThru
$type::CreateHardLink($PSHardLink, $OrgFile, 0)

Całość w przykładowym scenariuszu wygląda następująco:

$Definition = @'
[DllImport("kernel32.dll")]
	public static extern bool CreateHardLink(
	string lpFileName,
	string lpExistingFileName,
	IntPtr lpSecurityAttributes);
'@

$OrgFile = "P:\OrgFile.txt"
$PSHardLink = "P:\PS-HardLink.txt"
$MkLinkHardLink = "P:\MkLink-HardLink.txt"

"Hello World" | Set-Content $OrgFile
Get-Content $OrgFile | Write-Host -BackgroundColor Red

$type = Add-Type -MemberDefinition $Definition -Name WindowsAPI -PassThru
$type::CreateHardLink($PSHardLink, $OrgFile, 0)

#Test z użyciem mklink
Invoke-Command -ScriptBlock {& cmd /c "mklink /h $MkLinkHardLink $OrgFile"}

Get-Content $OrgFile | Write-Host -BackgroundColor Red
Get-Content $PSHardLink | Write-Host -BackgroundColor Red
Get-Content $MkLinkHardLink | Write-Host -BackgroundColor Red

"Hello PowerGeeks" | Set-Content $OrgFile

Get-Content $OrgFile | Write-Host -BackgroundColor Red
Get-Content $PSHardLink | Write-Host -BackgroundColor Red
Get-Content $MkLinkHardLink  | Write-Host -BackgroundColor Red

Zajmijmy się teraz dowiązaniami miekkimi. W odróżnieniu od poprzednich dowiązań, te mogą się odwoływać zarówno do pliku jak i do katalogu, a reprezentowane są w uproszczeniu jako skrót do obiektu docelowego.

Jak poprzednio importujemy bibliotekę kernel32 i definiujemy funkcję CreateSymbolicLink.

$Definition = @'
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
	public static extern int CreateSymbolicLink(
	string lpSymlinkFileName,
	string lpTargetFileName,
	uint dwFlags);
'@

Parametry mimo zmienionych nazw są zbliżone do tych z funkcji twardego dowiązania. Jedynym wyjątkiem jest tutaj ostatni parametr będący flagą definiującą czy tworzone dowiązanie dotyczy katalogu – 1, czy jednak pliku – 0.

Reszta jest analogiczna jak w poprzednim przypadku:

$Definition = @'
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
	public static extern int CreateSymbolicLink(
	string lpSymlinkFileName,
	string lpTargetFileName,
	uint dwFlags);
'@

$OrgFolder = "P:\OrgFolder"
$PSSoftLink = "P:\PS-HardLink"
$MkLinkSoftLink = "P:\MkLink-HardLink"
New-Item -ItemType Directory -Path $OrgFolder

$type = Add-Type -MemberDefinition $Definition -Name WindowsAPI -PassThru
$type::CreateSymbolicLink($PSSoftLink,$OrgFolder,1)

Invoke-Command -ScriptBlock {& cmd /c "mklink /d $MkLinkSoftLink $OrgFolder"}

Invoke-Command -ScriptBlock {& cmd /c "dir p:\ /al"}

Dla ciekawostki jeszcze. Aby utworzyć klasyczny skrót w formie pliku lnk możemy posłużyć się klasą WScript.Shell zawierającą metodę CreateShortCut. Gdzie podczas wywoływania metody wskazujemy ścieżkę do skrótu. Natomiast resztę parametrów skrótu przypisujemy odpowiednim atrybutom naszego obiektu.

$OrgFile = "c:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$ShortCutFile = "P:\PowerShell.lnk"

$wshshell = new-object -comobject wscript.shell
$shortCut = $wshShell.CreateShortCut($ShortCutFile)
$shortCut.TargetPath = $OrgFile
$shortCut.Description = "Testowy Skrot"
$shortCut.WorkingDirectory = "P:\"
$shortCut.HotKey = "CTRL+SHIFT+P"
$shortCut.Arguments = "-version 2.0"
$shortCut.Save()

Źródła:
http://blogs.technet.com/b/plwit/archive/2009/01/14/symlink-czyli-mklink-w-windows-server-2008.aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363860(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363866(v=vs.85).aspx

“…the hypervisor is not running” po użyciu Startup Repair

By Mateusz Nadobnik on Lipiec 27th, 2012

Po modyfikacjach narzędziem Diskpart w konfiguracji dysków w moim testowym serwerze Hyper-V musiałem wspomóc się narzędziem Startup Repair z względu na utratę danych zawartych w magazynie BCD (Boot Configuration Data).  BCD zostało pomyślnie odbudowane, ale większe było moje zdziwienie później, gdy ukazał mi się komunikat przy próbie wystartowania wirtualnych maszyn.

W tej sytuacji, aby naprawić problem nie uruchomionego hypervisora, wydajemy polecenieBcdedit.exe /set hypervisorlaunchtype auto następnie uruchamiamy system ponownie.

W tej sytuacji ten wpis w BCD znowu postawił na nogi moje wirtualne maszyny.