Come usare PowerShell per trovare gli amministratori locali

Nell’odierna era digitale, l’amministrazione del sistema e la gestione della sicurezza richiedono spesso l’uso di script. Un aspetto fondamentale per mantenere la sicurezza del sistema è tenere traccia degli amministratori locali sui computer Windows. L’uso di PowerShell per recuperare questi dati può rappresentare una svolta per molti professionisti IT. Leggi questo articolo per scoprire come utilizzare PowerShell per trovare gli amministratori locali. 

Background

PowerShell si è evoluto come un solido linguaggio di scripting e interprete di comandi. Soprattutto per i professionisti IT e i Managed Service Provider (MSP), script come quello fornito diventano indispensabili. Spesso gli MSP gestiscono più ambienti di clienti diversi, e questo rende difficile il monitoraggio manuale di ogni dettaglio. Sfruttando gli script per recuperare informazioni, per esempio per trovare gli amministratori locali, gli MSP possono garantire che solo le persone autorizzate abbiano un accesso elevato, salvaguardandosi da potenziali minacce e attività dannose.

Lo script per trovare gli amministratori locali

<#
.SYNOPSIS
    Updates a custom field with a list of local admins.
.DESCRIPTION
    Updates a custom field with a list of local admins.
.EXAMPLE
    No parameter needed
    
    Local Admins Found: Administrator, kbohlander, TESTDomain Admins
    Attempting to set Custom Field: LocalAdmins

PARAMETER: -CustomField "ReplaceWithAnyTextCustomField"    
    Updates the custom field you specified (defaults to "LocalAdmins"). The Custom Field needs to be writable by scripts (otherwise the script will report it as not found).

PARAMETER: -Delimiter "ReplaceWithYourDesiredDelimiter"
    Places whatever is entered encased of quotes between each user name. See below example.
.EXAMPLE
    -Delimiter " - "
    
    Local Admins Found: Administrator - kbohlander - TESTDomain Admins
    Attempting to set Custom Field: LocalAdmins
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 7, Windows Server 2008
    Release Notes:
    Switched to using net localgroup as it's the most reliable. Removed PowerShell 5.1 requirement.
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).
#>

[CmdletBinding()]
param (
    [Parameter()]
    [String]$CustomField = "LocalAdmins",
    [Parameter()]
    [String]$Delimiter = ', '
)

begin {
    if ($env:customFieldName -and $env:customFieldName -notlike "null") { $CustomField = $env:customFieldName }
    if ($env:delimiter -and $env:delimiter -notlike "null") { $Delimiter = $env:delimiter }
    $CheckNinjaCommand = "Ninja-Property-Set"
}
process {
    # Get objects in the Administrators group, includes user objects and groups
    $Users = net.exe localgroup "Administrators" | Where-Object { $_ -AND $_ -notmatch "command completed successfully" } | Select-Object -Skip 4

    if (-not $Users) {
        Write-Error "[Error] No user's found! This is extremely unlikely is something blocking access to 'net localgroup administrators'?"
        exit 1
    }

    Write-Host "Local Admins Found (Users & Groups): $($Users -join $Delimiter)"
    if ($(Get-Command $CheckNinjaCommand -ErrorAction SilentlyContinue).Name -like $CheckNinjaCommand -and -not [string]::IsNullOrEmpty($CustomField) -and -not [string]::IsNullOrWhiteSpace($CustomField)) {
        Write-Host "Attempting to set Custom Field: $CustomField"
        Ninja-Property-Set -Name $CustomField -Value $($Users -join $Delimiter)
    }
    else {
        Write-Warning "Unable to set customfield either due to legacy OS or this script is not running as an elevated user."
    }
}
end {
    
    
    
}

 

Accedi a oltre 700 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script per trovare gli amministratori locali inizia impostando i parametri predefiniti, in particolare puntando a un campo personalizzato denominato “LocalAdmins” e utilizzando una virgola come delimitatore predefinito. Ecco come funziona:

  • Inizializzazione: Lo script per trovare gli amministratori locali inizia impostando i comandi necessari, “Get-LocalGroupMember” per recuperare i membri del gruppo locale e “Ninja-Property-Set” per impostare le proprietà su NinjaOne, una rinomata piattaforma di gestione IT.
  • Recupero degli amministratori: Nel blocco relativo al processo, lo script per trovare gli amministratori locali controlla se il comando “Get-LocalGroupMember” è disponibile. In caso affermativo, lo utilizza per recuperare gli amministratori locali. In caso contrario, l’impostazione predefinita è l’uso del comando net.exe.
  • Formattazione dell’output: Dopo aver recuperato l’elenco degli amministratori, lo script per trovare gli amministratori locali formatta i nomi utente dividendoli da qualsiasi dominio o nome di macchina.
  • Integrazione con NinjaOne: Infine, lo script per trovare gli amministratori locali controlla se il comando “Ninja-Property-Set” è disponibile e quindi aggiorna il campo personalizzato in NinjaOne con l’elenco degli amministratori locali.

Casi d’uso potenziali

Immagina di essere l’amministratore IT di un’azienda di medie dimensioni con una forza lavoro remota in espansione. Con i dipendenti che accedono da sedi e dispositivi diversi, diventa fondamentale garantire che solo il personale autorizzato abbia accesso con diritti amministrativi. Distribuendo questo script, un professionista IT può ottenere l’elenco di tutti gli amministratori locali su varie postazioni di lavoro, verificare gli accessi e intraprendere azioni correttive, se necessario.

Confronti

Sebbene esistano diversi modi per trovare gli amministratori locali e organizzarli in un elenco, per esempio utilizzando interfacce utente grafiche o strumenti di terze parti, gli script di PowerShell offrono automazione, scalabilità e facilità di integrazione. Per esempio, mentre l’interfaccia grafica nativa “Gestione computer” consente di trovare gli amministratori locali su una singola workstation, il nostro script può essere scalato e utilizzato su più macchine, offrendo un modo più efficiente di recuperare questi dati, soprattutto per gli MSP che gestiscono numerosi ambienti di clienti diversi.

Domande frequenti

  • Questo script si può utilizzare solo su Windows? Sì, questo script per trovare gli amministratori locali è destinato ai computer Windows, con supporto a partire da Windows 10 e Windows Server 2016.
  • Posso cambiare il delimitatore? Sì, il delimitatore è personalizzabile con il parametro -Delimiter.
  • Ho sempre bisogno di NinjaOne per usare questo script? No, lo script per trovare gli amministratori locali verifica la disponibilità del comando NinjaOne. Se non è disponibile, visualizzerà solo l’elenco e non tenterà di aggiornare NinjaOne.

Implicazioni

Capire chi ha privilegi amministrativi è fondamentale per la sicurezza informatica. Amministratori non autorizzati o disonesti possono apportare modifiche al sistema, installare software dannoso o accedere a informazioni riservate. Monitorando e controllando regolarmente gli amministratori locali, le organizzazioni possono ridurre in modo significativo i potenziali rischi per la sicurezza.

Raccomandazioni

  • Audit regolari: Esegui periodicamente questo script per mantenere un elenco aggiornato degli amministratori locali.
  • Integra lo script per trovare gli amministratori locali con una soluzione di monitoraggio: Integra l’output con soluzioni di monitoraggio per ricevere avvisi sulle modifiche all’elenco degli amministratori locali.
  • Documentazione: Conserva la documentazione relativa a tutti gli utenti a cui sono stati concessi i diritti amministrativi locali, assicurandoti che vi sia una valida ragione aziendale per ogni assegnazione.

Considerazioni finali

Gli script PowerShell come quello fornito facilitano notevolmente il processo di recupero e gestione degli amministratori locali, ma piattaforme come NinjaOne amplificano i benefici di queste funzionalità. La perfetta capacità di integrazione di NinjaOne, unita a solidi strumenti di gestione IT, assicura che gli amministratori di sistema abbiano sempre il controllo, possano rispondere rapidamente alle modifiche e possano garantire sicurezza e prestazioni ottimali del sistema.

Passi successivi

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

Scopri qualcosa in 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.