Nel sofisticato ecosistema della gestione IT, garantire che i dispositivi siano correttamente aggiunti o rimossi da un dominio di rete è fondamentale. Per i professionisti dell’IT, questo compito è solitamente ripetitivo, ma l’importanza di eseguirlo in modo corretto non può essere sottovalutata. Oggi analizzeremo uno script PowerShell progettato per rimuovere un computer da un dominio in modo rapido e semplice.
Background
Lo script per rimuovere un computer da un dominio fornito risponde all’esigenza specifica di automatizzare le operazioni di rimozione da un dominio. I domini servono a raggruppare gli account utente, i computer e i criteri di gruppo in un’unica posizione centralizzata. I motivi per cui un professionista IT potrebbe voler rimuovere un computer da un dominio sono diversi: sicurezza, modifiche all’infrastruttura o smaltimento dell’hardware. L’esecuzione manuale di questa operazione non solo richiede molto tempo, ma è anche soggetta a errori umani. Pertanto, un solido script PowerShell per rimuovere un computer da un dominio, come quello descritto qui, è prezioso per i professionisti IT e i fornitori di servizi gestiti (MSP).
Lo script per rimuovere un computer da un dominio
#Requires -Version 2.0 <# .SYNOPSIS Removes the computer from the domain. .DESCRIPTION Removes the computer from the domain. .EXAMPLE -UserName "MyDomainUser" -Password "Somepass1" -LocalUserName "Administrator" -LocalPassword "Somepass1" Removes the computer from the domain and restarts the computer. .EXAMPLE -UserName "MyDomainUser" -Password "Somepass1" -LocalUserName "Administrator" -LocalPassword "Somepass1" -NoRestart Removes the computer from the domain and does not restart the computer. .EXAMPLE PS C:> Leave-Domain.ps1 -UserName "MyDomainUser" -Password "Somepass1" -LocalUserName "Administrator" -LocalPassword "Somepass1" -NoRestart Removes the computer from the domain and does not restart the computer. .OUTPUTS String[] .NOTES Minimum OS Architecture Supported: Windows 7, Windows Server 2012 Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). .COMPONENT ManageUsers #> [CmdletBinding()] param ( # Use a Domain UserName to remove this computer to a domain, this requires the Password parameter to be used as well [Parameter(Mandatory = $true)] [String] $UserName, # Use a Domain Password to remove a computer from a domain [Parameter(Mandatory = $true)] $Password, # Use a local admin's UserName to remove this computer from a domain, this requires the Password parameter to be used as well [Parameter(Mandatory = $true)] [String] $LocalUserName, # Use a local admin's Password to remove this computer from a domain [Parameter(Mandatory = $true)] $LocalPassword, # Do not restart computer after leaving to a domain [Switch] $NoRestart ) begin { Write-Output "Starting Leave Domain" # Converts username and password into a credential object $LeaveCred = [PSCredential]::new($UserName, $(ConvertTo-SecureString -String $Password -AsPlainText -Force)) # Converts username and password into a credential object $LocalCred = [PSCredential]::new($LocalUserName, $(ConvertTo-SecureString -String $LocalPassword -AsPlainText -Force)) } process { Write-Output "Removing computer($env:COMPUTERNAME) from domain" $script:LeaveResult = $false try { $LeaveResult = if ($NoRestart) { (Remove-Computer -UnjoinDomainCredential $LeaveCred -PassThru -Force -LocalCredential $LocalCred -Confirm:$false).HasSucceeded # Do not restart after leaving } else { # Restart after leaving (Remove-Computer -UnjoinDomainCredential $LeaveCred -PassThru -Force -Restart -LocalCredential $LocalCred -Confirm:$false).HasSucceeded } } catch { Write-Error "Failed to Leave Domain" } if ($LeaveResult) { if ($NoRestart) { Write-Output "Removed computer($env:COMPUTERNAME) from domain and not restarting computer" } else { Write-Output "Removed computer($env:COMPUTERNAME) from domain and restarting computer" } } else { Write-Output "Failed to remove computer($env:COMPUTERNAME) from domain" # Clean up credentials so that they don't leak outside this script $LeaveCred = $null $LocalCred = $null exit 1 } } end { # Clean up credentials so that they don't leak outside this script $LeaveCred = $null $LocalCred = $null Write-Output "Completed Leave Domain" }
Accedi a oltre 700 script nel Dojo di NinjaOne
Analisi dettagliata
Lo script per rimuovere un computer da un dominio segue un approccio modulare che comprende tre sezioni principali: inizio, processo e fine.
- Nella sezione iniziale viene inizializzato lo script per rimuovere un computer da un dominio, vengono validati parametri come il dominio e nomi utente/password locali e, a partire da questi parametri, vengono creati dei “credential object”.
- La sezione del processo è quella in cui avviene l’operazione vera e propria. Utilizza il cmdlet Remove-Computer di PowerShell, un potente strumento progettato per rimuovere un computer da un dominio corrente. La flessibilità dello script consente di riavviare il computer dopo la rimozione o di lasciarlo in esecuzione, a seconda delle preferenze dell’utente.
- La sezione finale riguarda la pulizia, e assicura che le credenziali utilizzate vengano cancellate per evitare potenziali problemi di sicurezza.
Casi d’uso potenziali
Immagina un professionista IT, Alex, che gestisce l’infrastruttura di rete di un’organizzazione di medie dimensioni. Ha appena smantellato diverse vecchie postazioni di lavoro, sostituendole con altre nuove. Invece di scollegare manualmente ogni computer dal dominio, Alex utilizza questo script per rimuovere un computer da un dominio, risparmiandosi ore di lavoro e garantendo che non rimangano credenziali residue sui computer dismessi.
Confronti
Mentre il metodo basato sull’interfaccia grafica, eseguito tramite “Proprietà del sistema”, offre un approccio più visivo, lo script PowerShell eccelle per automazione, scalabilità e precisione. Per rimuovere un computer da un dominio, la GUI può essere sufficiente, ma per le operazioni in blocco PowerShell non ha rivali.
Domande frequenti
- Ho bisogno di privilegi amministrativi per eseguire questo script per rimuovere un computer da un dominio? Sì, rimuovere un computer da un dominio con questo script richiede privilegi amministrativi sia sul computer locale che sul dominio.
- Cosa succede se non si fornisce lo switch -NoRestart? Per impostazione predefinita, il computer si riavvia dopo essere stato rimosso dal dominio.
Implicazioni
L’uso di script come questo per gestire le operazioni di dominio non è solo una questione di comodità, ma anche di sicurezza. Assicurarsi che le credenziali non vengano esposte, come giustamente fa lo script per rimuovere un computer da un dominio, è di fondamentale importanza. Una rimozione del dominio mal gestita può lasciare delle porte aperte per i criminali informatici.
Raccomandazioni
- Testa sempre lo script per rimuovere un computer da un dominio in un ambiente controllato prima di distribuirlo su larga scala.
- Assicurati che esistano sistemi di backup, soprattutto quando si effettuano modifiche in blocco.
- Aggiorna regolarmente lo script per rimuovere un computer da un dominio per tenere conto delle modifiche apportate al sistema operativo o ai cmdlet PowerShell.
Considerazioni finali
Gli script PowerShell come quello fornito per rimuovere un computer da un dominio sono di grandissima utilità, ma l’utilizzo di piattaforme come NinjaOne può semplificare ulteriormente le operazioni IT. NinjaOne offre una piattaforma unificata per il monitoraggio e la gestione dell’IT, integrando perfettamente script, automazione e una vasta gamma di attività IT in un unico strumento. Per i professionisti che desiderano ottimizzare le attività di gestione IT, strumenti come questo script, se integrati con piattaforme come NinjaOne, offrono prospettive molto interessanti.