Un buon modo per riavviare tutti i computer su un dominio Windows ogni notte


9

Qual è un buon modo per riavviare un elenco di computer Windows su un dominio Windows? Supponendo che il controller di dominio Windows non abbia un servizio per fare ciò, si prega di fare raccomandazioni per uno script.

Posso elencare i nomi host e ripetere i nomi host per inviare un comando di riavvio a ciascuno? Posso ottenere un elenco di nomi host dal server DHCP in esecuzione in una finestra di Windows 2008 durante l'esecuzione dello script?

I miei linguaggi di scripting preferiti dalla più alla meno desiderabile sono: PHP, javascript, Bash, Python (conoscono molto poco), VB (conoscilo ma non mi piace)


8
capovolgi l'interruttore. Sto scherzando.
gravyface,

ciò causerebbe un arresto, ho bisogno di un riavvio.
potenziato a vapore il

@JM - non se sono impostati su "Riprendi stato di alimentazione precedente" nel BIOS.
Nome falso

@Fake Name - sembra un sacco di lavoro
potenziato a vapore il

Risposte:


15

Se l'oggetto Criteri di gruppo non fa per te e vuoi andare con la seconda opzione di Mark Henderson (batching shutdown /m), puoi semplificare il tuo lavoro eseguendo il batch batch dello spegnimento in modo che lo faccia in parallelo anziché in seriale. Richiede PowerShell da parte della stazione di amministrazione, ma è molto elegante .

foreach ($ComputerName in $ComputerList) {
    invoke-command -AsJob -ScriptBlock {
        params($ComputerName)
        shutdown /m $ComputerName /r /f /t 0
    } -ArgumentList $ComputerName
}

Ciò che questo frammento fa è generare tanti processi in background in esecuzione in parallelo quante sono le macchine in $ ComputerList. Questo può far sì che lo spegnimento di Tutte le cose avvenga molto più velocemente.


2
Questa è una soluzione interessante - se hai molti computer da riavviare, consiglio vivamente questa soluzione poiché eseguirà i comandi di spegnimento in parallelo.
Richard West,

2
Questa -AsJobè la parte magica qui.
jscott,

Sono curioso di sapere perché stai usando il comando "shutdown" anziché il cmdlet Restart-Computer.
Charles Burge,

@CharlesBurge Questa è stata risposta 5 anni fa e la PS3 non è stata ampiamente utilizzata. Inoltre, questo dimostra la tecnica di eseguire comandi su altri sistemi. Nel 2017, faremmo tutto in PowerShell e non ci preoccuperemmo di comandi. I tempi cambiano.
sysadmin1138

7

Puoi farlo con le preferenze di criteri di gruppo creando una nuova attività pianificata che verrà eseguita ogni notte a una determinata ora. Il comando per quell'attività dovrebbe essere shutdown /r /t 0. È quindi possibile collegare tale oggetto Criteri di gruppo all'unità organizzativa o alle unità organizzative in cui sono presenti i computer.

Probabilmente vorrai usare l'opzione "Esegui questo programma a intervalli casuali" impostata tra 10-15 minuti. Avere ogni singolo computer acceso allo stesso tempo può essere dannoso per i tuoi interruttori se non stai attento. Potresti anche voler selezionare l'opzione per eseguire l'attività solo se il computer è rimasto inattivo per x ore, nel caso in cui qualcuno stia tirando un all-night. Non vuoi uccidere un'intera notte di lavoro riavviando qualcuno che sta cercando di stabilire una scadenza.


Non ho familiarità con l'impostazione delle attività pianificate con l'oggetto Criteri di gruppo, quindi mi chiedo: se una macchina viene spostata da un'unità organizzativa all'altra senza l'attività definita, l'attività Shed scompare o rimarrà dopo essere stata applicata la prima volta?
MaCuban,

6

Due opzioni:

  1. Creare un'attività pianificata tramite GPO in esecuzione shutdown /r /f /t 0o shutdown /g /f /t 0su ogni macchina che si desidera riavviare. (controlla shutdown /?per maggiori dettagli.

  2. Crea un batch che viene eseguito shutdown /m [computer name] /r /f /t 0da un computer centrale (forse il controller di dominio?). Ripeti il ​​ciclo per ogni computer che desideri riavviare (modifica il [computer name]). Ciò significa che il computer non verrà riavviato se non è raggiungibile per qualsiasi motivo e deve essere eseguito da un account che dispone dei diritti per riavviare i computer.

Dovresti essere in grado di scrivere un file batch che scorre in un elenco di computer estratti dalla directory attiva ed esegue il comando, tuttavia non ho il tempo di scriverne uno oggi (e non sono disposto a testarlo anche se L'ho scritto, altrimenti sarei alla griglia per riavviare il computer di tutti nel bel mezzo della giornata).


Inoltre c'è un comando psshutdown che può essere eseguito anche attraverso un file batch, parte della suite sysinternals ...
Bart Silverstrim,

Ho usato sia 1 che 2. Ora mi diverto con Powershell. Se usi il n. 2, considera lo script principale che genera un processo separato per ogni computer (ad es. start cmd /c shutdown /m computer /r /f /t 0) O usa una logica per verificare se online, altrimenti il ​​ritardo per i computer offline può essere significativo.
jscott,

4

Il modo migliore per farlo è licenziare la persona che ha l'idea che ciò sia necessario e fare ciò che fanno tutte le altre persone - non farlo.


Il reindirizzamento delle cartelle sembra legare le risorse quando le persone rimangono registrate durante la notte. Suppongo che potrei provare a impostare un logout di massa invece di un riavvio di massa, ma il riavvio sembra chiarire così tanti problemi. Le persone passano settimane o mesi senza riavviare. Di solito non dedico molto tempo per imparare il modo giusto di eseguire i sistemi Windows perché non è il mio lavoro principale. Che cosa mi consiglia?
potenziato a vapore il

1
Ah no. Migliaia di aziende non richiedono il riavvio del personale: pensi che utilizzino il reindirizzamento delle cartelle? Suggerisco di risolvere il problema a portata di mano. Personalmente sarei incazzato se venissi disconnesso dalla mia workstation ogni giorno - spesso lascio che i lavori vengano eseguiti durante la notte. La tua pigrizia può costare molte sofferenze alle persone - fai il tuo lavoro correttamente o assumi qualcuno che lo fa.
TomTom,

Bene, fare il mio lavoro correttamente significa non passare troppo tempo a fare da baby-sitter al nostro piccolo sistema Windows.
potenziato a vapore il

Non sapendo cosa fai? ;) Licenzio le persone dicendo che sono incompetenti nel loro lavoro, indipendentemente da come siano le loro prestazioni.
TomTom,

Sysadmin è un lavoro secondario che faccio per la mia famiglia per aiutarli. Se avessi avuto un tempo infinito certo, avrei letto più libri su finestre e altre tangenti. Ma il mio modo migliore per fare soldi è attenermi al software web. Penso che la tua risposta non sia affatto nello spirito di offrire una soluzione tecnica alla domanda che ho posto.
potenziato a vapore il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.