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
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à.