Jak zaimplementować skrypt logowania przez GPO?

Jakiś czas temu opisałem sposób na tworzenie skryptu logowania i implementowanie go poprzez właściwości użytkownika w Active Directory. Wspomniałem wtedy, że istnieje druga, nowocześniejsza metoda implementowania (przez GPO) i na tym skupimy się w dzisiejszym artykule.

Porównanie obu metod

GPO działa od czasów Windows 2000, więc jeśli macie w swojej sieci archaiczne Windowsy 95, 98, ME, NT to od razu odsyłam Was do opisanej wcześniej metody.

We wszystkich pozostałych aspektach, wydaje mi się, że przewaga leży po stronie GPO:

  • Jak zapewne wiecie, polityki GPO likujemy do cały kontenerów (OU). Stara metoda wymagała przypisywania skryptów ręcznie do każdego użytkownika. Ewentualnie można to było zrobić skryptem, ale było to i tak kłopotliwe w porównaniu do GPO. W GPO zmiana skryptu logowania dla użytkowników całej domenie to czynność szybka, łatwa i przyjemna.
  • GPO obsługuje nie tylko skrypty logowania! Możemy skonfigurować skrypty uruchamiające się podczas wylogowania (logoff script), startu (startup script) czy wyłączenia (shutdown script).
  • W profilu użytkownika mogliśmy wpisać tylko jeden skrypt logowania. Dzięki GPO możemy użyć wielu skryptów. Kolejność wykonywania ich jest również konfigurowalna.

Gdzie umieścić skrypt logowania?
GPO domyślnie korzysta z udziału „SYSVOL”, który replikuje się między wszystkimi kontrolerami domeny. Dzięki temu zmiana skryptu na jednym z kontrolerów skutkuje zmianą go na wszystkich pozostałych. Dokładna, fizyczna ścieżka to:

%SystemRoot%\SYSVOL\sysvol\\Policies\{GUID}\User\Scripts\Logon

Jak przypisać skrypt logowania użytkownikowi?
Zaczynamy od stworzenia skryptu i umieszczenia go w podanej wyżej ścieżce. W przykładzie użyjemy nazwy „logon.bat”. Na dobry początek skrypt może zawierać proste mapowanie dysków:

net use R: \\nazwa_serwera\nazwa_udziału
net use V: \\nazwa_serwera2\nazwa_udziału2

Następnie, decydujemy gdzie podepniemy nasz skrypt i w tym miejscu należy zaznaczyć, że GPO przypisujemy do całych kontenerów („OU”) i jeśli logon skrypt ma działać na jednym użytkowniku, bądź na wąskiej grupie użytkowników z danego OU, to będziemy używać filtrów. O filtrowaniu GPO był oddzielny artykuł. Zachęcam do przypomnienia.
Do edycji GPO używamy konsoli „Group Policy Management”. Co nieco o GPMC w różnych wersjach Windows możecie również poczytać w jednym z poprzednich artykułów.

Tworzymy nową politykę GPO i podpinamy ją w odpowiednim miejscu. Musi to być kontener zawierający konta użytkowników. W podanym przykładzie jest to cały kontener „users”.

Edytujemy GPO (PPM > Edit) i nawigujemy do:

User Configuration > Windows Settings > Scripts „Logon/Logoff”

We właściwościach (properties) nie ma jeszcze żadnych informacji . Klikamy w przycisk „Add”, aby wskazać nasz skrypt.

Wskazujemy plik ( w naszym przykładzie jest to plik logon.bat)

Pole „Script Parameters” można opcjonalnie wykorzystać do przekazania parametrów, których nie zawiera skrypt. Będą niewidoczne dla użytkownika (pamiętajmy, że do udziałów netlogon i sysvol użytkownik ma dostęp i może podejrzeć zawartość skryptów). Przyda się Wam to na przykład gdy chcecie w parametrze przekazać poufne hasło.

Teraz nasz skrypt jest widoczny. Tutaj możemy go usunąć , edytować itd jeśli zajdzie potrzeba 🙂

Zamykamy okno edytora i konsolę GPMC.
Polityka zreplikuje się pomiędzy kontrolerami domeny i zadziała przy zalogowaniu użytkowników. Szybsze zaaplikowanie jej na komputerze możemy wykonać poleceniem:

gpupdate /force

Jeśli macie jakieś pytania lub komentarze – piszcie.

Łukasz Skalikow

Obecnie Manager IT. Przez lata byłem Inżynierem systemów. Jestem entuzjastą i specem od vSphere, Windows serwer, GPO. Od zawsze byłem zwolennikiem wiersza poleceń i automatyzacji. Obecnie, ze względu na pracę, rodzinę i wyjazdy służbowe, dużo mniej udzielam się na blogu, ale mam nadzieję, że pośród kilkuset porad opublikowanych na spece.it, wiele osób znajdzie dla siebie coś przydatnego :)

Przeczytaj także...

7 komentarzy

  1. Marek Gawryliszyn napisał(a):

    witam serdecznie niestety w ten sposób nie mogę uruchomić skryptu na Windowsie 7 Profesional który jest podłączony do domeny na windows 2012 server Proszę o pomoc

    • Karol napisał(a):

      Napisz więcej szczegółów. Nie masz takich opcji jak w artykule, czy pojawia się jakiś błąd? A może po prostu na stacjach roboczych nic się nie dzieje? Sam przymierzam się do podniesienia domeny do 2012 i mnie ciekawi, co mnie czeka 🙂

    • Miki napisał(a):

      Karol. jak zrobisz migracje domeny daj znać jak poszło. Może arta wstawić krok po kroku. Też muszę powoli do tego się zabrać.

  2. Gombal napisał(a):

    Próbuję robić wszystko dokładnie jak w artykule ale nie mam nigdzie czegoś takiego jak Scripts w Edytorze zarządzania zasadami grupy. Jaka może być przyczyna?

  3. koRnac napisał(a):

    a jak zmienic wszystkim uzytkownikom nazwe zamapowanego dysku?. Sktpytem zostało wymuszone mapowanie dysku net use x: \\192.17.55.70\zasob. Uzytownicy widza dysk jako dysk x na 192.17.55.70. A chcialbym aby bylo tylko „x:”

  4. k0nficjusz napisał(a):

    Odkopię temat. Mam problem bo skrypt uruchamiając z ręki działa poprawnie:
    net use x: \111.111.111.111zasob login /user:user /savecred /p:yes

    Niestety po dodaniu do logon script nie wykonuje się.

    Jak podejrzę za pomocą rsop.msc to nie ma żadnych błędów. I *.bat powinien się wykonać. Niestety mapowanego dysku brak.

    PS. domena 2012

Dodaj komentarz