shutdown.exe i restart serwerów z listy

Restart serwerów z systemem Windows to czynność, która ma swoje stałe, honorowe miejsce w definicji administrowania 🙂 Robimy to, gdy systemowi brakuje zasobów, gdy zainstalowany program o to prosi lub bo zaaplikowaniu nowych poprawek bezpieczeństwa. Istnieje szereg rozwiązań, które dużych przedsiębiorstwach wykonują i kontrolują restarty maszyn: ot choćby SCCM, czy polityki GPO. Jednak zarówno w tych dużych jak i małych często najprostsze rozwiązania są najlepsze, dlatego dzisiaj wykorzystamy polecenie shutdown i nauczymy się restartować maszyny, których nazwy mamy w pliku tekstowym.
Polecenie shutdown z przełącznikiem -r po 60 sekundach wykona restart naszej maszyny.

shutdown –r

Z parametrem –t możemy domyślne 60 sekund zamienić na przykład na 0:

shutdown –r –t 0

Parametr –c doda do Dziennika Zdarzeń (Event Log) powód restartu:

shutdown –r –t 0 -c „instalacja poprawek MS”

Restart zdalnej maszyny możemy wykonać dzięki parametrowi –m:

shutdown -r -m \\komputer_zdalny -t 0 -c „instalacja poprawek MS”

Jeśli pamiętacie mój wcześniejszy post o wykorzystaniu pętli w CMD, to na pewno wiecie już jak proste jest wykonanie tej komendy dla maszyn, których nazwy listy w oddzielnym pliku (każda nazwa musi być w oddzielnym wersie):

for /f „eol=” %%i IN (lista_serwerow.txt) DO shutdown -r -m \\%%i /t 0 /c „instalacja poprawek MS”

Będąc jednak wiernym zasadom z artykułu o bezpiecznych Plikach Wsadowych z całego serca polecam aby skrypt z restartem posiadał zabezpieczenie przed przypadkowym uruchomieniem. Nie trzeba chyba wyjaśniać jak niepożądany byłby nieplanowany restart wszystkich serwerów:

@echo *******************************************************
@echo *** Restartujemy serwery z pliku lista_serwerow.txt ?!
@echo ***
@echo *** …Nacisnij dowolny klawisz aby kontynuowac
@echo *** lub zamknij to okno klikajac na krzyzyk w prawym gornym rogu
@echo ***
@echo *******************************************************
pause >nul
goto restartuj
cls
:restartuj
cls
for /f „eol=” %%i IN (lista_serwerow.txt) DO shutdown -r -m \\%%i /t 0 /c „instalacja poprawek MS”

Jestem fanem szybkich i prostych rozwiązań, ale wiem, że Pliki Wsadowe mogą wydawać się Wam dość archaicznym rozwiązaniem i pewnie będziecie mieli kilka innych ciekawych propozycji. Zachęcam do podzielenia się nimi w komentarzach.

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

6 komentarzy

  1. Tomek pisze:

    Witaj,
    mam taką potrzebę aby shutdown konkretnego serwa mógł uruchomić na stacji użytkownik z uprawnieniami użytkownika domeny,
    Shutdown po przez batch uruchamiany z stacji roboczej, Ale po uruchomieni jest jest komunikat: Odmowa dostępu. Jak zrobić aby użytkownik z uprawnieniami do stacji roboczej jako zwykły użytkownik mógł ten serwer zrestartować ?

  2. limak pisze:

    Cześć
    A pytanie w jaki sposób wykonać taki restart ale żeby u użytkownika pojawił się komunikat i żeby dopiero po potwierdzeniu się zresetował?

    • shutdown.exe i psshutdown nie mają takich opcji, ale możesz napisać sobie skrypt.
      Najprościej chyba o okienku CMD czy Powershell ustwić odliczanie i informację w stylu „Ten serwer zrestartuje się za 30 sekund, aby przerwać procedurę zamknij to okno krzyżykiem”.

      Restarty wywołane przez WSUS czy SCCM wyświetlają taki ładny popup informujący o zainstalowaniu poprawek i wymaganym restarcie z możliwością akceptowania, odrzucenia, przesunięcia o ileś minut. Wszytsko jest konfugurowane centranie.

      Pozatym oczywiście pewnie sa programy firm trzecich, ale ja takowych nie używałem. Gdy jest potrzeba restartowania serwerów, wysnacza się godzinę, informuje ich mailowo i jazda :))

Dodaj komentarz