none
operazioni pianificate : shutdown programmato per client XP via GPO RRS feed

  • Domanda

  • Ho creato una policy su AD (schema 2008) su server 2008 R2 per aggiungere sui client XP un'operazione pianificata che esegua lo shutdown /r /f /t 0

    Nel dettaglio del task ho impostato  l'amministratore di domino in modo che venga eseguito lo spegnimento con il domain admin.

    Noto che sulclient la policy è acquisita ma se controllo nell'elenco degli scheduled task non vedo niente! E' vuoto.

    Suggerimenti? Come debuggare?

    Grazie


    rc

    venerdì 31 maggio 2019 06:05

Risposte

  • ecco come è strutturato il sistema:

    nel folder c:\script risiedono: spegnipc.cmd e Lista-pcLAB.txt, quando eseguito  spegne i pc nella lista Lista-pcLAB.txt, in modalità asincrona (in realtà con 1 secondo di ritardo).

    I pc da spegnere devono essere nel dominio e il task deve essere temporizzato con le credenziali di un utente di dom che sia amministratore dei pc remoti (alla brutta un domain admin).

    Se i pc non sono nel dominio c'è da aggiungere una riga allo script e seguire i condigli di Fabrizio (FW)


    @echo off
    :: spegnipc.cmd setlocal :: :: spegne solo i pc accesi in modalità ASINCRONA :: prelevandoli dalla lista :: C:\script\Lista-pcLAB.txt :: :: call :_SHUTDOWN xxx.xx.xxx.xxx :: volendo interrompe lo shutdown :_ABORTSHUTDOWN :: CALL :_ABORTSHUTDOWN xxx.xx.xxx.xxx :: Gastone Canali :::: nella lista è possibile commentare i PC :::: che non si vogliono spegnere usando il punto e virgola ; in testa :: Esempio di Lista-pcLAB.txt :: ;inizio file :: ;pc-003 (le righe che inizaino con ; sono considerate commento) :: ;Esempio :: ;pc-004 :: ;sa-lab01 il primo :: 37.24.1.141 :: pc-039 :: 37.24.1.143 :: ;pc-040 :: pc-112 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: SCRIPT PATH SET ScrPath=C:\Script :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Lista dei pc da spegnere SET LISTA_PC=%ScrPath%\Lista-pcLAB.txt :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Time_Out period before shutdown to xxx seconds. SET /A "T_O=600" :: in minuti. Solo per visualizzarlo nel messaggi set /A "min=%T_O% / 60" :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Messaggio agli utenti SET MSG="Il PC sara' spento entro %min% minuti. Salvare e uscire." ::: ********************** FINE *********************** ::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::Variabili:::::::::::::::::::::::::::::::::::::::::::::::::::

    :: attesa fra un pc e l'altro
    Set "attesa=1"

    :: integro il path set path=%ScrPath%;%path% set filename=%~n0 if not exist "%ScrPath%\log" mkdir "%ScrPath%\log" 1>NUL 2>NUL set logfile="%ScrPath%\log\_%filename%.txt" :: comando per appendere al log file
    set accodaLOG=^>^> %logfile% 2^>^&1 ::******************************************* :: MAIN ::******************************************* if not exist "%LISTA_PC%" echo ERROR: %LISTA_PC% lista non trovata %date% %time% %accodaLOG% for /f "eol=;" %%c in ('type "%LISTA_PC%"') do ( REM Esegue lo Shutdown call :_SHUTDOWN %%c REM Aspetta attesa CALL :_WAIT %attesa% ) goto :_FINE ::******************************************* :: end MAIN ::******************************************* ::::::::::::::::::::::::::::::::::::::::::::::::::: :: PROCEDURE ::::::::::::::::::::::::::::::::::::::::::::::::::: :_SHUTDOWN title=%1 echo pc da spegnere %1 %accodaLOG% echo >%temp%\%1.cmd @echo off echo>>%temp%\%1.cmd title %1 echo>>%temp%\%1.cmd ping %1 -4 -n 2^|find "TTL=" ^>nul ^&^& (echo ACC ^&^& goto :_FAI) echo>>%temp%\%1.cmd goto :_FINE echo>>%temp%\%1.cmd :_FAI echo>>%temp%\%1.cmd echo VIVO %1 - Ti spengo!! echo>>%temp%\%1.cmd shutdown /s /f /t %T_O% -c %MSG% /m %1 ^>"%temp%\%1.log" 2^>^&1 echo>>%temp%\%1.cmd echo %1 rem pause>>"%temp%\%1.log" echo>>%temp%\%1.cmd :_FINE echo>>%temp%\%1.cmd exit start "spengo %1" c:\windows\system32\cmd.exe /c "%temp%\%1.cmd" CALL :_WAIT 1 goto :EOF :_ABORTSHUTDOWN title %1 echo pc interrompo lo shutdown %1 %accodaLOG% echo >%temp%\%1.cmd @echo off echo>>%temp%\%1.cmd title=%1 echo>>%temp%\%1.cmd ping %1 -4 -n 2^|find "TTL=" ^>nul ^&^& (echo ACC ^&^& goto :_FAI) echo>>%temp%\%1.cmd goto :_FINE echo>>%temp%\%1.cmd :_FAI echo>>%temp%\%1.cmd echo VIVO %1 - Interrompo lo shutdown!! echo>>%temp%\%1.cmd shutdown /a /m %1 ^>"%temp%\%1.log" 2^>^&1 echo>>%temp%\%1.cmd echo %1 rem pause>>"%temp%\%1.log" echo>>%temp%\%1.cmd :_FINE echo>>%temp%\%1.cmd exit start c:\windows\system32\cmd.exe /c "%temp%\%1.cmd" CALL :_WAIT 1 goto :_EOF :_WAIT if +%1+==++ goto :EOF ping 127.0.0.1 -n %~1 1>nul 2>nul goto :EOF :_FINE



    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere




    lunedì 3 giugno 2019 12:01
    Moderatore

Tutte le risposte

  • Su Windows XP devi prima installare le estensioni lato client dei criteri di gruppo.
    In ogni caso credo tu sappia che Windows XP è comunque fuori supporto da diversi anni e andrebbe aggiornato...
    venerdì 31 maggio 2019 14:15
    Moderatore
  • In questi anni non ho mai usato le GPO per lo spegnimeto, ma uno script temporizzato sul server (realizzato ai tempi di win 2000), questa modalità ha alcuni vantaggi strategici nel contesto in cui la usiamo.

    1. E' indipendente dalla versione di windows (funziona da win200/xp/vista/7/10/2013/2016/2019 a oggi)
    2. Non risente della problemi di propagazione delle policy (Hai bisogno di spegnere i pc ora; lo esegui)
    3. Centralmente possiamo decidere di non spegnere alcuni pc (senza aspettare che recepiscano le modifiche)

    Se ti interessa posto lo script da schedulare

    Ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere




    domenica 2 giugno 2019 15:03
    Moderatore
  • In questi anni non ho mai usato le GPO per lo spegnimeto, ma ancora oggi continuiamo ad usare uno script temporizzto sul server ...

    Se ti interessa posto lo script da schedulare

    Faccio una breve premessa, la patch su XP era già installata, però come ben sappiamo ci sono situazioni con le quali dobbiamo convivere e non è sempre possibile fare upgrade di S.O. in tempi brevi per questioni che non dipendono da noi.

    Il problema è che nella mia realtà ci sono macchine che non vengono mai spente quindi dovrei applicare una policy ad effetto immediato, giusto per questa occasione, per il riavvio di un gruppo di pc; poi non utilizzerò più questa politica.

    Vorrei capire esattamente come funziona il tuo meccanismo, se non capisco male rendi disponibile su un server uno script che lancerai dal server e dove andrai ad elencare tutte le macchine coinvolte, giusto?

    Mi faresti un favore se pubblicassi lo script.

    Grazie 1000

    lunedì 3 giugno 2019 07:04
  • Se il pc non è stato nemmeno riavviato allora è quello il problema....
    Comunque in generale si tratta di lanciare un comando shutdown /m su un server. Se client o server è fuori dominio deve essere anche configurato il firewall per permettere l'operazione.

    lunedì 3 giugno 2019 08:41
    Moderatore
  • Ho preso un pc di prova e l'ho riavviato numerose volte, quindi questo escludo.

    Tutti i client sono in dominio.


    • Modificato ZoneMaster lunedì 3 giugno 2019 11:56
    lunedì 3 giugno 2019 09:30
  • ecco come è strutturato il sistema:

    nel folder c:\script risiedono: spegnipc.cmd e Lista-pcLAB.txt, quando eseguito  spegne i pc nella lista Lista-pcLAB.txt, in modalità asincrona (in realtà con 1 secondo di ritardo).

    I pc da spegnere devono essere nel dominio e il task deve essere temporizzato con le credenziali di un utente di dom che sia amministratore dei pc remoti (alla brutta un domain admin).

    Se i pc non sono nel dominio c'è da aggiungere una riga allo script e seguire i condigli di Fabrizio (FW)


    @echo off
    :: spegnipc.cmd setlocal :: :: spegne solo i pc accesi in modalità ASINCRONA :: prelevandoli dalla lista :: C:\script\Lista-pcLAB.txt :: :: call :_SHUTDOWN xxx.xx.xxx.xxx :: volendo interrompe lo shutdown :_ABORTSHUTDOWN :: CALL :_ABORTSHUTDOWN xxx.xx.xxx.xxx :: Gastone Canali :::: nella lista è possibile commentare i PC :::: che non si vogliono spegnere usando il punto e virgola ; in testa :: Esempio di Lista-pcLAB.txt :: ;inizio file :: ;pc-003 (le righe che inizaino con ; sono considerate commento) :: ;Esempio :: ;pc-004 :: ;sa-lab01 il primo :: 37.24.1.141 :: pc-039 :: 37.24.1.143 :: ;pc-040 :: pc-112 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: SCRIPT PATH SET ScrPath=C:\Script :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Lista dei pc da spegnere SET LISTA_PC=%ScrPath%\Lista-pcLAB.txt :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Time_Out period before shutdown to xxx seconds. SET /A "T_O=600" :: in minuti. Solo per visualizzarlo nel messaggi set /A "min=%T_O% / 60" :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: Messaggio agli utenti SET MSG="Il PC sara' spento entro %min% minuti. Salvare e uscire." ::: ********************** FINE *********************** ::: :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::Variabili:::::::::::::::::::::::::::::::::::::::::::::::::::

    :: attesa fra un pc e l'altro
    Set "attesa=1"

    :: integro il path set path=%ScrPath%;%path% set filename=%~n0 if not exist "%ScrPath%\log" mkdir "%ScrPath%\log" 1>NUL 2>NUL set logfile="%ScrPath%\log\_%filename%.txt" :: comando per appendere al log file
    set accodaLOG=^>^> %logfile% 2^>^&1 ::******************************************* :: MAIN ::******************************************* if not exist "%LISTA_PC%" echo ERROR: %LISTA_PC% lista non trovata %date% %time% %accodaLOG% for /f "eol=;" %%c in ('type "%LISTA_PC%"') do ( REM Esegue lo Shutdown call :_SHUTDOWN %%c REM Aspetta attesa CALL :_WAIT %attesa% ) goto :_FINE ::******************************************* :: end MAIN ::******************************************* ::::::::::::::::::::::::::::::::::::::::::::::::::: :: PROCEDURE ::::::::::::::::::::::::::::::::::::::::::::::::::: :_SHUTDOWN title=%1 echo pc da spegnere %1 %accodaLOG% echo >%temp%\%1.cmd @echo off echo>>%temp%\%1.cmd title %1 echo>>%temp%\%1.cmd ping %1 -4 -n 2^|find "TTL=" ^>nul ^&^& (echo ACC ^&^& goto :_FAI) echo>>%temp%\%1.cmd goto :_FINE echo>>%temp%\%1.cmd :_FAI echo>>%temp%\%1.cmd echo VIVO %1 - Ti spengo!! echo>>%temp%\%1.cmd shutdown /s /f /t %T_O% -c %MSG% /m %1 ^>"%temp%\%1.log" 2^>^&1 echo>>%temp%\%1.cmd echo %1 rem pause>>"%temp%\%1.log" echo>>%temp%\%1.cmd :_FINE echo>>%temp%\%1.cmd exit start "spengo %1" c:\windows\system32\cmd.exe /c "%temp%\%1.cmd" CALL :_WAIT 1 goto :EOF :_ABORTSHUTDOWN title %1 echo pc interrompo lo shutdown %1 %accodaLOG% echo >%temp%\%1.cmd @echo off echo>>%temp%\%1.cmd title=%1 echo>>%temp%\%1.cmd ping %1 -4 -n 2^|find "TTL=" ^>nul ^&^& (echo ACC ^&^& goto :_FAI) echo>>%temp%\%1.cmd goto :_FINE echo>>%temp%\%1.cmd :_FAI echo>>%temp%\%1.cmd echo VIVO %1 - Interrompo lo shutdown!! echo>>%temp%\%1.cmd shutdown /a /m %1 ^>"%temp%\%1.log" 2^>^&1 echo>>%temp%\%1.cmd echo %1 rem pause>>"%temp%\%1.log" echo>>%temp%\%1.cmd :_FINE echo>>%temp%\%1.cmd exit start c:\windows\system32\cmd.exe /c "%temp%\%1.cmd" CALL :_WAIT 1 goto :_EOF :_WAIT if +%1+==++ goto :EOF ping 127.0.0.1 -n %~1 1>nul 2>nul goto :EOF :_FINE



    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere




    lunedì 3 giugno 2019 12:01
    Moderatore
  • Lo script è asincrono, con controllo dei pc accesi(evita il minuto di timeout del comando shutdown se il pc risultasse spento), la prima versione, molto semplice, per spegnere circa 300 computer impiegava 10 ai 30 minuti, contro i 5 dell'attuale (1 sec di wait, ma mettendo a 0 il parametro attesa la cosa si può velocizzare)

    ciao Gastone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    • Proposto come risposta ZoneMaster martedì 4 giugno 2019 12:47
    • Proposta come risposta annullata ZoneMaster giovedì 6 giugno 2019 05:29
    • Proposto come risposta ZoneMaster giovedì 6 giugno 2019 05:29
    • Proposta come risposta annullata Fabrizio-GMVP, Moderator domenica 9 giugno 2019 20:12
    lunedì 3 giugno 2019 12:09
    Moderatore
  • Lo script funziona benissimo ed è eccezionale. Grazie 1000
    martedì 4 giugno 2019 11:12
  • Lo script funziona benissimo ed è eccezionale. Grazie 1000

    Mi fa piacere!

    Ti chiedo se puoi chiudere le risposte, adesso sono delle proposte di risposta

    Ciao Gasone


    Gastone Canali >http://www.armadillo.it


    Se alcuni post rispondono al tuo quesito(non necessariamente i miei), ricorda di contrassegnarli come risposta e non dimenticare di contrassegnare anche i post utili. GRAZIE! Ricorda di dare un occhio ai link Click Here andHere

    martedì 4 giugno 2019 19:32
    Moderatore
  • Certamente, ma non  riesco a capire come chiudere le risposte e dove trovo questa funzione che me lo permette.

    Sto guardando nella documentazione del sito ma non trovo alcuna informazione al momento

    giovedì 6 giugno 2019 05:34