Come disabilitare un account locale in Windows utilizzando PowerShell

I professionisti IT e i fornitori di servizi gestiti (MSP) conoscono bene la situazione: A volte è necessario disabilitare un account locale su un computer Windows per motivi di sicurezza, conformità o altri motivi operativi. Certo, esistono strumenti GUI integrati per questo, ma quando si gestiscono più sistemi, l’automazione è fondamentale. Oggi analizzeremo uno script PowerShell progettato per automatizzare questa operazione, rendendola più veloce, sicura e facilmente ripetibile. 

Lo script consente di disabilitare un account locale su Windows tramite PowerShell. Questo script PowerShell si rivolge in modo specifico a chi cerca un modo per disabilitare un utente in ambiente Windows tramite PowerShell o a chi si chiede come disabilitare un account locale su Windows. Quindi, senza ulteriori indugi, analizziamo questo script.

Lo script

#Requires -Version 5.1

<#
.SYNOPSIS
    Disable a local account
.DESCRIPTION
    Disable a local account
.EXAMPLE
     -UserName "AdminTest"
    Disables the account AdminTest
.EXAMPLE
    PS C:> Disable-LocalAdminAccount.ps1 -UserName "Administrator"
    Disables the account AdminTest
.OUTPUTS
    None
    String[]
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2016
    Release Notes:
    Initial Release
    (c) 2023 NinjaOne
    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
    LocalBuiltInAccountManagement
#>

[CmdletBinding()]
param (
    # User name of a local account
    [Parameter(Mandatory = $true)]
    [String]
    $UserName
)

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    if ($(Get-Command -Name "Disable-LocalUser" -ErrorAction SilentlyContinue)) {
        # Disables $UserName using Disable-LocalUser
        try {
            Disable-LocalUser $UserName -Confirm:$false
        }
        catch {
            Write-Error $_
            exit 1
        }
    }
    else {
        # Disables $UserName using net.exe
        net.exe user $UserName /active:no
        if ($LASTEXITCODE -gt 0) {
            exit 1
        }
    }
}
end {}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Comprendere lo script per disabilitare un account locale

 Ecco una breve sinossi: 

  • Lo script inizia verificando se è in esecuzione con privilegi amministrativi. In caso contrario, si ferma e visualizza un messaggio di errore. 
  • Controlla la presenza di Disable-LocalUser tra i comandi disponibili. Se esiste, lo utilizza. Altrimenti ricorre al metodo net.exe user per disabilitare un account locale di un utente. 

Lo script richiede che il campo $UserName contenga una stringa. È l’account locale che si intende disabilitare. 

Prerequisiti 

  • Requisiti del sistema operativo: L’architettura minima del sistema operativo supportata comprende Windows 10 e Windows Server 2016. 
  • Versione PowerShell: Richiede almeno PowerShell 5.1. 

Backup e Ripristino: Procedere con cautela

Prima di eseguire qualsiasi script PowerShell che modifichi le impostazioni di sistema, è fondamentale eseguire il backup delle impostazioni esistenti o, meglio ancora, dell’intero sistema. In questo modo potrai tornare allo stato precedente se qualcosa dovesse andare storto. Ecco un paio di metodi di backup che puoi utilizzare: 

Punto di ripristino del sistema 

La creazione di un punto di ripristino del sistema è un modo semplice ed efficace per eseguire il backup delle impostazioni correnti. Ecco come utilizzarlo: 

  • Apri il menu Start e cerca “Crea un punto di ripristino”. 
  • Clicca sul risultato corrispondente per aprire la finestra Proprietà del sistema. 
  • Vai alla scheda “Protezione del sistema” e clicca su “Crea”. 
  • Assegna un nome al punto di ripristino e salvalo. 

Come eseguire un backup completo del sistema 

Per un backup completo, puoi creare un’immagine del sistema:

  • Apri il Pannello di controllo. 
  • Accedi a “Sistema e sicurezza” > “Backup e ripristino (Windows 7)”. 
  • Nel riquadro di sinistra, clicca su “Crea un’immagine del sistema”. 
  • Segui la procedura guidata per completare il backup. 

Nota: Testa sempre il processo di ripristino per assicurarti che il backup sia valido.

Gestione degli errori: Cosa fare quando le cose vanno male

Lo script PowerShell per disabilitare un account locale include una gestione degli errori di base, ma come in ogni script, possono verificarsi degli errori. Di seguito sono riportati alcuni errori comuni e suggerimenti per la risoluzione dei problemi: 

“Accesso negato. Esegui con i privilegi di amministratore.” 

Questo errore si verifica se provi a eseguire lo script per disabilitare un account locale senza diritti amministrativi. Assicurati di cliccare con il tasto destro del mouse sulla finestra di PowerShell e di scegliere “Esegui come amministratore”. 

L’account utente non esiste 

Se inserisci un nome utente che non esiste, lo script per disabilitare un account locale visualizzerà un errore. Ricontrolla il nome utente e riprova. 

Lo script non viene eseguito 

Se lo script per disabilitare un account locale non viene eseguito, controlla le impostazioni del criterio di esecuzione di PowerShell. Potrebbe essere necessario modificare il criterio per consentire l’esecuzione dello script. Per modificarlo, utilizza il seguente comando: 

Set-ExecutionPolicy RemoteSigned 

Ricordati di ripristinare l’impostazione originale dopo l’esecuzione dello script.

Gestione degli errori di tipo Catch-All 

Se vuoi estendere il campo d’azione dello script per disabilitare un account locale, e registrare gli errori in un file di testo per la verifica, puoi modificare il blocco catch dello script in questo modo: 

catch { Write-Error $_ “Error: $_” | Out-File “C:pathtoerrorlog.txt” -Append exit 1 } 

Nota: Sostituisci “C:pathtoerrorlog.txt” con il percorso del file di log desiderato. 

Incorporando questi metodi di backup e di gestione degli errori, aggiungerai un ulteriore livello di sicurezza e affidabilità all’esecuzione dello script per disabilitare un account locale.

Perché è utile?

Per i professionisti IT: 

  • Sicurezza: Se gestisci l’infrastruttura IT di un’organizzazione, sapere come disabilitare un account locale in Windows è fondamentale. Gli account non autorizzati o ridondanti rappresentano un rischio per la sicurezza. 
  • Conformità: La conformità normativa spesso richiede la disabilitazione di alcuni account. L’automazione di questo processo garantisce che non venga saltato nessun passaggio. 
  • Automazione e scalabilità: Lo script può essere incluso come parte di una sequenza di automazione più ampia, semplificando il processo per disabilitare un account locale su molte macchine contemporaneamente. 

Per gli MSP: 

  • Multi-Tenancy: Gli MSP possono facilmente integrare questo script nei loro sistemi di gestione centralizzati. Questo semplifica la gestione di più clienti da un’unica dashboard. 
  • Efficienza operativa: La capacità di automazione di questo script PowerShell riduce i costi operativi. 
  • SLA e soddisfazione del cliente: L’automazione garantisce tempi di risposta più rapidi e il rispetto degli SLA, fattori che si traducono direttamente in una maggiore soddisfazione dei clienti. 

Considerazioni finali

Quando si tratta di gestire gli account locali, il file Disable-LocalAdminAccount.ps1 è uno strumento potente da avere nel tuo arsenale. Sfrutta la potenza dell’automazione e migliora le misure di sicurezza integrando questo script per disabilitare un account locale nei tuoi flussi di lavoro. Dopotutto, nel frenetico panorama IT di oggi, l’automazione non è un lusso, ma una necessità. 

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.