Di tanto in tanto, soprattutto, un amministratore di sistema dovrà riavviare un server o un sistema. Di solito, è possibile connettersi in remoto a un sistema e riavviare/spegnere il sistema tramite l'interfaccia utente grafica - PowerShell fornisce diversi metodi per riavviare un computer in remoto e delineeremo i 6 metodi noti in questo post.
Riavvia un computer Windows in remoto utilizzando PowerShell
Un prerequisito per questi metodi è garantire che possiamo contattare i sistemi remoti e autenticarci se necessario. Inoltre, è necessario verificare che un sistema remoto non sia in attesa di riavvio.
Avrai bisogno di quanto segue:
- Un account utente sul computer remoto nel gruppo dell'amministratore locale.
- Windows PowerShell o PowerShell Core.
1] Riavvia un computer remoto con Restart-Computer
Questo cmdlet è semplice da usare con parametri flessibili. Un ulteriore prerequisito per il funzionamento del comando è assicurarsi che WinRM sia configurato e consentito tramite il firewall di Windows del computer remoto e che WMI sia consentito tramite il firewall di Windows.
Riavvia-Computer -NomeComputer $NomeComputer -Force
Per riavviare più computer in parallelo, eseguire il comando seguente:
$ComputerArray | ForEach-Object -Parallel Riavvia-Computer -ComputerName $_ -Force -ThrottleLimit 3
2] Riavvia un computer remoto con Invoke-CimMethod
Il Invocare-CimMethod
funziona utilizzando un metodo WIM per riavviare il sistema remoto, sebbene non sia flessibile come il Riavvia il computer
cmdlet.
Un ulteriore prerequisito per il funzionamento del comando è assicurarsi che WinRM sia configurato e consentito tramite il firewall di Windows del computer remoto.
Invoke-CimMethod -ComputerName $ComputerName -ClassName 'Win32_OperatingSystem' -MethodName 'Reboot'
3] Riavvia un computer remoto con lo spegnimento.EXE
Il spegnimento.EXE
è l'eseguibile standard integrato che Windows offre per riavviare un sistema e non è un comando PowerShell ma offre una serie robusta di opzioni.
Un ulteriore prerequisito per il funzionamento del comando è assicurarsi che il computer remoto disponga del servizio Registro di sistema remoto abilitato e WMI consentito attraverso il firewall di Windows.
spegnimento.exe /m \\computer remoto /r /t 0
4] Riavvia un computer remoto con PSExec.EXE
Una delle utility più utilizzate all'interno del toolkit Sysinternals, psexec.EXE
offre diverse abilità uniche che rendono facile l'interazione con un sistema remoto.
Un ulteriore prerequisito per il funzionamento del comando è assicurarsi che il servizio SMB sia in esecuzione, la condivisione di file e stampanti sia abilitata, la condivisione di file semplice sia disabilitata e la condivisione amministrativa admin$ sia disponibile.
psexec.exe -d -h \\computer remoto "spegnimento".exe /r /t 0 /f"
5] Riavvia un computer remoto con RunDLL32.EXE
Il rundll32.EXE
offre un modo per eseguire determinati metodi contro eseguibili interni e API di Windows, come shell32.dll. Esistono due metodi per riavviare un sistema utilizzando questa funzionalità, ma questo metodo non può essere effettivamente utilizzato in remoto da solo, è possibile combinarlo con PowerShell tramite un Invoca-Comando
su un sistema remoto.
Metodo 1:
Invoke-Command -ComputerName $ComputerName -ScriptBlock & rundll32.utente exe.exe ExitWindowsExec
Metodo 2:
Invoke-Command -ComputerName $ComputerName -ScriptBlock & rundll32.utente exe.exe ExitWindowsExec
6] Riavvia un computer remoto con Taskkill.EXE
Ultimo ma non meno importante, uccidi.EXE
è un'altra utility di Windows che offre alcune funzionalità per riavviare Windows, anche se in modo indiretto. Terminando il lsas.EXE
processo, forzerai il riavvio di Windows.
uccidi il compito.exe /S \\computer remoto /IM lsass.exe /F
Questo è tutto sui 6 modi per utilizzare PowerShell per riavviare un computer remoto!