Come rimuovere un computer da un dominio utilizzando PowerShell

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

Ottieni l’accesso

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.

Passi successivi

La creazione di un team IT efficiente ed efficace richiede una soluzione centralizzata che funga da principale strumento per la fornitura di servizi. NinjaOne consente ai team IT di monitorare, gestire, proteggere e supportare tutti i dispositivi, ovunque essi si trovino, senza la necessità di una complessa infrastruttura locale.

Per saperne di più su NinjaOne Endpoint Management, fai un tour dal vivo, o inizia la tua prova gratuita della piattaforma NinjaOne.

Categorie:

Ti potrebbe interessare anche

Guarda una demo×
×

Guarda NinjaOne in azione!

Inviando questo modulo, accetto La politica sulla privacy di NinjaOne.

Termini e condizioni NinjaOne

Cliccando sul pulsante “Accetto” qui sotto, dichiari di accettare i seguenti termini legali e le nostre condizioni d’uso:

  • Diritti di proprietà: NinjaOne possiede e continuerà a possedere tutti i diritti, i titoli e gli interessi relativi allo script (compreso il copyright). NinjaOne ti concede una licenza limitata per l’utilizzo dello script in conformità con i presenti termini legali.
  • Limitazione d’uso: Puoi utilizzare lo script solo per legittimi scopi personali o aziendali interni e non puoi condividere lo script con altri soggetti.
  • Divieto di ripubblicazione: In nessun caso ti è consentito ripubblicare lo script in una libreria di script appartenente o sotto il controllo di un altro fornitore di software.
  • Esclusione di garanzia: Lo script viene fornito “così com’è” e “come disponibile”, senza garanzie di alcun tipo. NinjaOne non promette né garantisce che lo script sia privo di difetti o che soddisfi le tue esigenze o aspettative specifiche.
  • Assunzione del rischio: L’uso che farai dello script è da intendersi a tuo rischio. Riconosci che l’utilizzo dello script comporta alcuni rischi intrinseci, che comprendi e sei pronto ad assumerti.
  • Rinuncia e liberatoria: Non riterrai NinjaOne responsabile di eventuali conseguenze negative o indesiderate derivanti dall’uso dello script e rinuncerai a qualsiasi diritto legale o di equità e a qualsiasi rivalsa nei confronti di NinjaOne in relazione all’uso dello script.
  • EULA: Se sei un cliente NinjaOne, l’uso dello script è soggetto al Contratto di licenza con l’utente finale (EULA) applicabile.