Przygotowanie szablonu maszyny Windows [Powtarzalne środowisko #1]

Każdy kto choć raz musiał instalować obraz serwera z określonymi ustawieniami i pokusiło go o instalowanie oprogramowania, zmianę ustawień systemowych wie ile czasu to kosztuje. I jeśli nie robicie tego zbyt często, może to Was nie boli. Ale co jeśli musicie postawić nowe środowisko składające się z 5-10-15 serwerów. Same instalacje i klikanie w kolejnych okienkach dalej jest bardzo czasochłonne, a bardzo często wiele ustawień systemowych jest takich samych na przestrzeni maszyn. W końcu antywirus będzie raczej ten sam na wszystkich serwerach.

Inny przypadek to powtarzalne środowisko testowe. Albo do nauki, albo do pracy w firmie. Albo jak chcecie się pobawić w dostawcę IaaS 😊

W tym wpisie i kolejnym zajmiemy się tworzeniem powtarzalnego środowiska sieciowego w oparciu o PowerShell i Hyper-V. Dziś będzie dość krótko – utworzenie szablonu systemu i ograniczenia z tego wynikające. Zatem zaczynajmy!

Porozmawiajmy o SYSPREP

Sysprep to Windows System Preparation Tool, czyli narzedzie do przygotowania systemu, w które pozwala na customową instalację wielu końcówek (w postaci stacji roboczych lub serwerów). Usuwa specyficzne informacje z Windowsa, generalizując maszynę. Utworzony obraz może być uruchamiany w dwóch trybach: audit mode, podczas której możemy jeszcze dokonać dodatkowych zmian i aktualizacji albo OOBE (Out-Of-Box Experience), czyli regularny boot systemu.

Co mam na myśli pisząc „specyficzne informacje z Windowsa”? Sysprep usunie SID, część sterowników. Pozwala też na użycie pliku unattend.xml do instalacji. Jest to więc dość elastyczne rozwiązanie. Dzięki trybowi audytu możemy testować sterowniki, aplikacje przed wypuszczeniem obrazu „na produkcję”. Brzmi więc zachęcająco.

Ale sysprep ma również ograniczenia:

  • SID jest usuwany tylko z systemu operacyjnego na którym uruchomisz sysprep. Jeśli więc na jednej maszynie masz kilka systemów, na każdym z nich będziesz musiał uruchomić sysprep,
  • Jeśli na systemie są zainstalowane aplikacje, które odwołują się do konkretnego zasobu pod konkretną literą, najpewniej nie będzie ona działać,
  • Jeśli serwer nie jest „golasem” i ma zainstalowane pewne role – nie wszystko będzie działać 😊 Pod tym linkiem znajdziecie, których ról nie da się generalizować,
  • Jeśli odpalasz sysprepa na systemie z systemem plików NTFS, na którym trzymasz zaszyfrowane zawartości – niestety utracisz do nich dostęp bezpowrotnie,
  • Jeśli pojawi się błąd w trakcie działania sysprep, to niestety nie uruchomisz tego polecenia ponownie na tym samym systemie. Najpierw będziesz musiał ponownie zainstalować obraz,
  • Używaj tylko sysprep, który jest zainstalowany na Waszej maszynie, w przeciwnym wypadku nic z tego nie wyjdzie. Na każdym systemie jest on zlokalizowany pod ścieżką %WINDIR%\system32\sysprep.
  • Dla Windowsa 10 to zadziała dopiero od wersji 1607.
  • Ustawcie odpowiednio silne hasło – dlaczego to konieczne? Zobaczycie pod koniec poradnika.

Jeśli powyższe ograniczenia są zbyt blokujące, będziecie musieli poszukać czegoś innego (o czym pewnie napiszę w przyszłości). Tymczasem zacznijmy tworzenie obrazu.

Przechodzenie przez proces instalacji serwera pominę – to klikanie na kolejnych okienkach przycisku [Next]. Po utworzeniu systemu zainstalowałem sobie dwie role serwera: Windows Deployment ServicesRemote Desktop Services. Oczywiście wszystko poszło z PowerShella:

Install-WindowsFeature -name „Remote-Desktop-Services”
Install-WindowsFeature -name WDS

Teraz odpalimy sysprep. Możliwe jest, że wyskoczy Wam nieszczęsny komunikat:

Bardzo denerwujący widok

Odpalcie go poprostu poprzez %WINDIR%\system32\sysprep\sysprep.exe.

Jeśli nie podacie żadnych parametrów, wyskoczy Wam ładne okienko:

Można poklikać!

Z shutdown options wybierzmy:

  • Quit – jeśli po wykonaniu roboty sysprep ma się po prostu zamknąć,
  • Reboot – jeśli rozważamy wejście w tryb audytowania,
  • Shutdown – jeśli wybieramy OOBE

Przyznam szczerze, że powyższe opcje na obrazku zazwyczaj nie działały u mnie, jak to naprawić, opisuję na koniec wpisu. Na potrzeby utworzenia szablonu wybieramy OOBE, Generalizeshutdown.

Teraz wystarczy kliknąć [OK] i… tak, to chwile potrwa

Mamy pracusia na horyzoncie!

I jeśli wszystko pójdzie dobrze, to możecie być szczęsliwi!

Mogłaby to być piękna opowieść

Ale niestety muszę Was rozczarować i to nie jest narzędzie bezobsługowe i bezproblemowe, jak tego byśmy chcieli. Jeśli wejdziecie w tryb audytu i „coś nie pyknie”, to wpadniecie w „Reboot loop”:

Nie może być tak kolorowo…

No to ratujemy świat. Odpalamy sekwencję [SHIFT] + [F10], aby uruchomić CMD. A teraz w punktach:

  1. secpol.msc
  2. Ustawcie opcje jak na tym obrazku:
Łatwizna, zmiana ustawień i będzie działać!

3. Reboot maszyny.

Jeśli to nie pomoże, to mam inne rozwiązanie:

  1. mmc,
  2. Local Users and Computers,
  3. Odszukajcie konto Administratora:
    • jeśli jest wyłączone, włączcie je,
    • jeśli ma flagę „User must change password at next logon”, usuńcie ją,
    • jeśli nie ma flagi „Password never expires”, zaznaczcie ją,
    • jeśli konto jest wyłączone, włączcie je
  4. Ustaw silne hasło dla konta
Kolejna metoda, może tym razem zadziała?

Jeśli powyższe dwie nie zadziałają i znowu wyskoczy Wam ten sam komunikat, to próbujemy dalej. Przejdziemy przez kreator tworzenia konta:

Do trzech razy sztuka!

Zostaniecie poproszeni o podanie danych lokalizacyjnych, być może klucz do Windowsa (to nie jest reguła) i zaakceptowanie licencji. Po wykonaniu tych wszystkich kroków, robimy restart ponownie.

Czy walka może trwać dalej? Tak, oczywiście, z pewnością jeśli wybraliście tryb audytowania 😊! Teraz wytoczymy jedno z cięższych dział – zmiany w rejestrze. Podobnie jak wcześniej, wchodzimy do cmd poprzez [SHIFT]+[F10] i odpalamy rejestr poleceniem regedit. Nawigujemy do Computer\HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status i zmieniamy wszystkie poniższe wartości:

HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\AuditBoot                                              Wartość: 0
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\ChildCompletion\setup.exe               Wartość: 3
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\ChildCompletion\audit.exe                Wartość: 0
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus\CleanupState             Wartość: 2
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\SysprepStatus\GeneralizationState  Wartość: 7
HKEY_LOCAL_MACHINE\SYSTEM\Setup\Status\UnattendPasses\auditSystem            Wartość: 0

Po zresetowaniu komputera, tryb audytowania został wyłączony, więc po zalogowaniu do komputera będziecie musieli (oczywiście, jeśli chcecie) wykonać sysprep ponownie.

Chyba połowa artykułu jest o tym jak naprawić sysprep, zamiast z niego przyjemnie korzystać, ale co tam, to rozwiązanie natywne i po prostu na miejscu. Ale to właśnie problemy z sysprep zainspirował mnie do takiej a nie innej miniaturki wpisu. Jeśli macie jakieś „hacki” na sysprep, to podzielcie się nimi w komentarzu 😊

Marcin Kuchczyński

Wielki fan automatyzowania wszystkiego, co trzeba wykonać więcej niż 2 razy. Cierpliwie rozwijający się w kierunku rozwiązań chmurowych i raczkujący w sferze sztucznej inteligencji. W IT od 2016 roku.

2 komentarze

  1. hucyp pisze:

    A jakiś pomysł na rozwiązanie typowe szkolne? Komputery bez domeny i serwera, ale z Windows Pro. 30 sztuk takich samych jeszcze nie odpalanych komputerów. Jak w miarę szybko skonfigurować na nich te same ustawienia i konta? tzn. konto admina, konto ucznia, konfiguracja sieci wifi i zapuścić instalki kilku programów?

Leave a Reply