Utilizzare PowerShell per elencare gli utenti locali sui sistemi Windows

PowerShell è uno strumento potente nell’arsenale dei professionisti IT, spesso sfruttato per la sua capacità di automatizzare le attività ed estrarre i dati con facilità. Un’attività critica che i Managed Service Provider (MSP) e gli amministratori di sistema si trovano ad affrontare di frequente è quella di elencare gli utenti di un sistema informatico. Oggi analizzeremo uno script PowerShell progettato appositamente per questo scopo: elencare gli utenti locali. 

Background

È innegabile che nell’ambiente IT di oggi, caratterizzato da ritmi frenetici, la capacità di estrarre rapidamente i dati sugli utenti di un sistema sia preziosa. Ciò è particolarmente vero nelle grandi aziende o quando si distribuiscono nuove apparecchiature o software. Gli amministratori di sistema e gli MSP si trovano spesso a dover capire chi ha accesso a cosa e quando. Lo script PowerShell fornito soddisfa l’esigenza di elencare gli utenti locali su un computer Windows, consentendo ai professionisti di ottenere rapidamente informazioni.

Lo script per elencare gli utenti locali

#Requires -Version 2.0

<#
.SYNOPSIS
    Lists local computers' users.
.DESCRIPTION
    Lists local computers' users. By default it lists only the enabled users.
.EXAMPLE
    No parameters needed.
    Lists enabled users on the local computer.
.EXAMPLE
     -AllUsers
    Lists enabled and disabled users on the local computer.
.EXAMPLE
    PS C:> List-Users.ps1 -AllUsers
    Lists enabled and disabled users on the local computer.
.OUTPUTS
    System.Management.Automation.SecurityAccountsManager.LocalUser[]
.NOTES
    Minimum OS Architecture Supported: Windows 7, Windows Server 2012
    Release Notes:
    Initial Release
.COMPONENT
    ManageUsers
#>

[CmdletBinding()]
param (
    # Will return disabled users as well as enabled users
    [Switch]
    $AllUsers
)

begin {
    Write-Output "Starting List Users"
}

process {
    # If we are running powershell under a 32bit OS or running a 32bit version of powershell
    # or we don't have access to Get-LocalUser
    if (
        [Environment]::Is64BitProcess -ne [Environment]::Is64BitOperatingSystem -or
            (Get-Command -Name "Get-LocalUser" -ErrorAction SilentlyContinue).Count -eq 0
    ) {
        # Get users from net.exe user
        $Data = $(net.exe user) | Select-Object -Skip 4
        # Check if the command ran the way we wanted and the exit code is 0
        if ($($Data | Select-Object -last 2 | Select-Object -First 1) -like "*The command completed successfully.*" -and $LASTEXITCODE -eq 0) {
            # Process the output and get only the users
            $Users = $Data[0..($Data.Count - 3)] -split 's+' | Where-Object { -not $([String]::IsNullOrEmpty($_) -or [String]::IsNullOrWhiteSpace($_)) }
            # Loop through each user
            $Users | ForEach-Object {
                # Get the Account active property look for a Yes
                $Enabled = $(net.exe user $_) | Where-Object {
                    $_ -like "Account active*" -and
                    $($_ -split 's+' | Select-Object -Last 1) -like "Yes"
                }
                # Output Name and Enabled almost like how Get-LocalUser displays it's data
                [PSCustomObject]@{
                    Name    = $_
                    Enabled = if ($Enabled -like "*Yes*") { $true }else { $false }
                }
            } | Where-Object { if ($AllUsers) { $_.Enabled }else { $true } }
        }
        else {
            exit 1
        }
    }
    else {
        try {
            if ($AllUsers) {
                Get-LocalUser
            }
            else {
                Get-LocalUser | Where-Object { $_.Enabled -eq $true }
            }
        }
        catch {
            Write-Error $_
            exit 1
        }
    }
}

end {
    Write-Output "Completed List Users"
}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script per elencare gli utenti locali è piuttosto semplice. Inizia definendo un parametro, $AllUsers, che quando viene utilizzato, include nel suo output sia gli utenti abilitati che quelli disabilitati. Nel blocco “processo”, lo script per elencare gli utenti locali verifica innanzitutto l’architettura del sistema e la disponibilità del cmdlet Get-LocalUser. Se c’è una mancata corrispondenza o il cmdlet non è disponibile, lo script per elencare gli utenti locali torna a usare il comando legacy net.exe user. I dati ricavati da entrambi i metodi vengono quindi elaborati per elencare gli utenti. Quando si utilizza il comando net.exe user, lo script per elencare gli utenti locali recupera lo stato degli utenti, controllando se ogni account è attivo. Quindi fornisce questi dati in modo strutturato. Negli scenari in cui Get-LocalUser è disponibile, lo script per elencare gli utenti locali recupera ed elenca direttamente gli utenti, filtrando solo quelli abilitati, a meno che non venga utilizzato il parametro $AllUsers.

Casi d’uso potenziali

Immagina una professionista dell’IT, Jane, che sta distribuendo un nuovo aggiornamento del software in tutta la sua azienda. Prima di distribuire l’aggiornamento, deve verificare gli account utente su ogni macchina per assicurarsi che tutte le licenze software siano assegnate correttamente. Invece di controllare manualmente ogni computer, utilizza lo script PowerShell per elencare gli utenti locali, risparmiando ore del suo tempo prezioso.

Confronti

Lo script per elencare gli utenti locali utilizza il cmdlet Get-LocalUser quando è possibile, e l’approccio alternativo che utilizza net.exe user è un modo per permettere allo script di funzionare su sistemi legacy. Altri script potrebbero affidarsi esclusivamente a cmdlet o metodi più recenti. Il doppio approccio dello script per elencare gli utenti locali garantisce la compatibilità con un’ampia gamma di sistemi Windows, rendendolo versatile in diversi ambienti.

Domande frequenti

  • Lo script per elencare gli utenti locali può essere utilizzato su qualsiasi macchina Windows?
    È progettato per Windows 7, Windows Server 2012 e versioni successive.
  • Cosa succede se Get-LocalUser non è disponibile sul mio sistema?
    Lo script per elencare gli utenti locali ricorre automaticamente al comando net.exe user se Get-LocalUser non è disponibile o se c’è una mancata corrispondenza in termini di architettura.

Implicazioni

L’elenco degli utenti di un computer può fornire un’istantanea dei potenziali punti di accesso per il personale non autorizzato. Nel contesto della sicurezza informatica, la comprensione di questi utenti e del loro stato è un passo fondamentale per garantire che solo le persone autorizzate abbiano accesso.

Raccomandazioni

  • Aggiorna regolarmente PowerShell per avere accesso ai cmdlet più recenti.
  • Esegui sempre gli script da fonti affidabili per garantire la sicurezza del sistema.
  • Verifica regolarmente gli elenchi degli utenti per assicurarti che non siano stati aggiunti account non autorizzati.

Considerazioni finali

NinjaOne, con le sue solide soluzioni di gestione IT, integra strumenti come questo script PowerShell per elencare gli utenti locali. Quando i professionisti IT elencano gli utenti locali utilizzando il nostro script PowerShell, possono poi utilizzare la piattaforma completa di NinjaOne per gestire, monitorare e proteggere questi utenti, assicurando che l’infrastruttura IT rimanga ottimizzata e sicura.

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