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.
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ć ?
Zmusiłeś mnie do dokończenia i publikacji artykułu:
http://spece.it/windows-serwer-artykuly/jak-nadac-uprawnienia-wylaczenia-lub-restartu-serwera-w-gpo-lgp
Daj znać, czy pomogło 🙂
Nie działa 🙁
http://spece.it/windows-serwer-artykuly/jak-nadac-uprawnienia-wylaczenia-lub-restartu-serwera-w-gpo-lgp#comments
Omówmy ten problem w tamtym wątku 🙂
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 :))