come spegnere un pc in rete
All, PowerShell, Sistemi

Come spegnere un pc in rete

Come spegnere un pc in rete all’interno di un dominio? Tramite powershell

Diverse volte mi capita che i clienti richiedono di poter spegnere un pc in rete per poter controllare in maniera del tutto da remoto lo stato dei device aziendali. Per ovviare alla richiesta ho pensato di creare uno script powershell con il quale tramite un CSV venga letto nome pc e orario di spegnimento.

Procediamo.

Prima di ogni cosa prepariamo il file csv che andrai a dare in pasto allo script powershell. Sul nostro desktop (od ovunque vuoi) creiamo il file list.csv utilizzando il semplice blocco note.
E’ importante dare una struttura ben definita al nostro csv, definendo le colonne ed i dati da inserire. Per semplicità prendetevi come riferimento un vostro carattere separatore di colonne e tenete sempre quello ogni volta che realizzate un csv, è importante perchè sarete sicuri di non sbagliare quando andrete ad estrarre i dati.

Una volta creato il file con nomepc e ora inseriamo i dati e salviamo il nostro documenti con estensione csv.

spegnere un pc in rete

Ora è necessario creare lo script powershell che ci aiuterà a far spegnere tutti i pc che abbiamo inserito all’interno del file list.csv.

Write-Host "Controllo PC accesi" 
$PC_accesi = Import-CSV -delimiter '|' 'C:\ServerFolders\list.csv' | Where { Test-Connection $_.PC -count 1 -quiet }
$PC_accesi | ft -AutoSize

$IntestazioneSpegnimento=0

$PC_accesi | foreach {
    $PC = New-Object Object
    $PC | Add-Member Noteproperty Nome -value $_.nomepc
    $LAN=gwmi -ComputerName $PC.Nome -Class Win32_NetworkAdapterConfiguration | Where-Object {$_.DefaultIPGateway}
    $PC | Add-Member Noteproperty MAC -value $LAN.MacAddress
    $PC | Add-Member Noteproperty Gateway -value $LAN.DefaultIPGateway
    $PC | Add-Member Noteproperty DNS -value $LAN.DNSServerSearchOrder
    $PC | Add-Member Noteproperty IP -value ($LAN.ipaddress | Where-Object {($_).SubString(0,5) -eq ($LAN.DefaultIPgateway).SubString(0,5)})
    $OraOFF=$_.'ora'
    New-EventLog "Spegnimento remoto PC" -Source "Verifica stato" -ErrorAction SilentlyContinue
    $paramsEventoAcceso = @{
    LogName = 'Spegnimento remoto PC'
    Source = 'Verifica stato'
    EntryType = 'Information'
    EventId = 1001
    Message = 'Il PC '+$PC.Nome+' è acceso. Spegnimento previsto per le '+$OraOFF+":00."
    }
    Write-EventLog @paramsEventoAcceso

    if ((get-date).hour -eq $OraOFF) {
        $IntestazioneSpegnimento++
        if ($IntestazioneSpegnimento=1) {
            Write-Host "ESECUZIONE SPEGNIMENTO PC"
            Write-Host "-------------------------"
        }
        Write-Host -ea silentlycontinue ('Spengo '+$PC.Nome)
        New-EventLog "Spegnimento remoto PC" -Source "Spegnimento computer" -ErrorAction SilentlyContinue
        $paramsEventoSpengo = @{
            LogName = 'Spegnimento remoto PC'
            Source = 'Spegnimento computer'
            EntryType = 'Warning'
            EventId = 1000
            Message = 'Lancio spegnimento PC.'+($PC|Out-String)
            }
        Write-EventLog @paramsEventoSpengo
        Stop-Computer -ErrorAction SilentlyContinue -ComputerName $_.PC -Force 
        }
    }

Ultimo passo è quello di creare una operazione pianificata inserendo come programma il vostro powershell.exe e aggiungere l’esecuzione del file .ps1.
Per prima cosa imposta l’operazione pianificata, inserisci il nome e spunta la casella “esegui indipendentemente dalla connessione degli utenti”, altra spunta fondamentale è “Esegui con i privilegi più elevati”.

spegnere un pc in rete

Configurato la pianificazione passa all’azione che dovrà eseguire windows una volta avviata. Passare alla scheda “azioni” e cliccare su “nuova”, dove andrai ad aggiungere il percorso dell’applicazione powershell nella voce “programma o script”, solitamente il percorso è “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe“. Ultimo passaggio è aggiungere l’argomento, al suo interno va messo lo script precedentemente creato con questa sintassi: -file “‪C:\Users\Administrator\Desktop\list.csv”.

operazione spegnimento pc

Per ultimo dovrai settare le impostazioni della pianificazione e puoi farlo tramite la scheda “impostazioni” in questo modo

attività spegnimento

E questo è quanto, se avrai seguito tutti i passaggi riuscirai a spegnere un pc in rete con un semplice csv. Ricordati che se cambi i nomi delle colonne all’interno del file da te creato dovrai andare a modificare anche lo script.
Se hai bisogno di supporto scrivi un commento o contattami tramite il form.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *