Come elencare i gruppi di cui un utente fa parte, in modo efficiente, con PowerShell

Nel panorama in rapida evoluzione dell’IT, la gestione efficace degli utenti e la comprensione dei loro ruoli rimangono fondamentali per la sicurezza e l’efficienza di qualsiasi organizzazione. Tra gli strumenti a disposizione dei professionisti IT, gli script PowerShell si distinguono come potenti soluzioni per automatizzare le attività. Uno di questi script si occupa di elencare i gruppi di cui un utente fa parte.

Background

I gruppi di cui un utente fa parte definiscono i diritti e le autorizzazioni di cui dispone un utente all’interno di una rete. Con la crescita dell’organizzazione, tenere traccia dei gruppi di cui un utente fa parte diventa sempre più importante. Tuttavia, provare a farlo manualmente può essere un’attività complicata e soggetta a errori. È qui che il nostro script PowerShell si fa notare. Progettato in modo specifico per individuare ed elencare i gruppi di cui un utente fa parte, questo script è prezioso per i professionisti IT e i Managed Service Provider (MSP). Garantire la corretta appartenenza ai gruppi aiuta a evitare l’assegnazione di privilegi eccessivi e rafforza la posizione di sicurezza di un’organizzazione.

Lo script per individuare i gruppi di cui un utente fa parte

#Requires -Version 4.0 -RunAsAdministrator

<#
.SYNOPSIS
    This will output the groups that the specified user belongs to.
.DESCRIPTION
    This will output the groups that the specified user belongs to.
.EXAMPLE
     -UserName "Administrator" -IsDomainUser
    Will get the groups that the user Administrator belongs to in Active Directory.
.EXAMPLE
     -UserName "Administrator"
    Will get the groups that the user Administrator belongs to on the machine it runs on.
.EXAMPLE
    PS C:> Get-User-Membership.ps1 -UserName "Administrator"
    Will get the groups that the user Administrator belongs to on the machine it runs on.
.OUTPUTS
    Output (PSCustomObject)
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows Server 2012
    If you wish to interact with AD you will need to install RSAT with at least the AD feature.
    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 (
    # Specify one user
    [Parameter(Mandatory = $false)]
    [String]
    $UserName,
    # Modify Local User Membership
    [Parameter(Mandatory = $false)]
    [Switch]
    $IsDomainUser
)

begin {}

process {
    if (-not $IsDomainUser) {
        # Get local machine groups
        Get-LocalGroup | ForEach-Object {
            $Group = $_.Name
            # Get users in current group
            # Check that $UserName is a member of this current group and output it to StdOut/Write-Output
            Get-LocalGroupMember -Group $Group | Where-Object { $_.Name -like "*$UserName" } | ForEach-Object {
                [PSCustomObject]@{
                    Group = $Group
                    User  = $_.Name
                }
            }
        }
    }
    else {
        if ((Get-Module -Name ActiveDirectory -ListAvailable -ErrorAction SilentlyContinue)) {
            try {
                Import-Module -Name ActiveDirectory
                # Get most of our data needed for the logic, and to reduce the number of time we need to talk to AD
                $ADUser = (Get-ADUser -Identity $UserName -Properties SamAccountName -ErrorAction SilentlyContinue).SamAccountName
            }
            catch {
                Write-Error -Message "Ninja Agent could not access AD, either RSAT was not installed or that the agent does not have permissions to view users and groups."
                exit 5 # Access Denied exit code
            }
            # Get a list of groups that the user is in
            # Loop through each group
            Get-ADGroup -Filter * -ErrorAction SilentlyContinue | ForEach-Object {
                $ADGroup = $_
                # Get users from current group and filter out all other users
                Get-ADGroupMember -Identity $ADGroup -ErrorAction SilentlyContinue | Where-Object {
                    $_.SamAccountName -like $ADUser
                } | ForEach-Object {
                    # Write out to StandardOutput
                    [PSCustomObject]@{
                        Group = $ADGroup.Name
                        User  = $_.SamAccountName
                    }
                }
            }
        }
        else {
            # Throw error that RSAT: ActiveDirectory isn't installed
            Write-Error -Message "RSAT: ActiveDirectory is not installed or not found on this computer. The PowerShell Module called ActiveDirectory is needed to proceed." -RecommendedAction "https://docs.microsoft.com/en-us/powershell/module/activedirectory/"
            exit 2 # File Not Found exit code
        }
    }
}
end {}

 

Accedi a oltre 300 script nel Dojo di NinjaOne

Ottieni l’accesso

Analisi dettagliata

Lo script per individuare i gruppi di cui un utente fa parte può essere suddiviso in due componenti principali in base alla sua funzione: 

  • Controllo dell’appartenenza al gruppo locale: Se l’opzione -IsDomainUser non è specificata, lo script recupera ed elenca i gruppi di cui l’utente specificato fa parte sulla macchina locale. 
  • Controllo dell’appartenenza al gruppo Active Directory: Se l’opzione -IsDomainUser è attiva, lo script comunica con Active Directory per recuperare ed elencare i gruppi di cui fa parte l’utente specificato.

Durante il processo, lo script per individuare i gruppi di cui un utente fa parte visualizza l’output dei risultati come un PSCustomObject assicurando che i dati siano strutturati e possano essere facilmente compresi o elaborati.

Situazione d’uso potenziale

Immagina un professionista IT di una grande azienda che deve verificare l’appartenenza a un gruppo di un nuovo responsabile di reparto. Utilizzando lo script, il professionista IT può facilmente elencare tutti i gruppi di cui un utente fa parte sia in ambiente locale che in Active Directory. In questo modo si garantisce che il responsabile del reparto abbia le autorizzazioni corrette, evitando potenziali violazioni della sicurezza o errori di accesso.

Approccio alternativo

Anche se l’interfaccia grafica di Active Directory Users and Computers (ADUC) consente di visualizzare i gruppi di cui un utente fa parte, richiede un intervento manuale e non è adatta a controlli di massa. Il nostro script PowerShell automatizza questa attività, rendendola efficiente per il controllo di più utenti o per verifiche frequenti. Inoltre, con PowerShell, i risultati possono essere facilmente esportati, filtrati o integrati nei report, e questo offre una flessibilità che gli strumenti della GUI non hanno.

Domande frequenti

  • D: Lo script può essere eseguito senza i privilegi di amministratore?
    R: Lo script per individuare i gruppi di cui un utente fa parte richiede diritti di amministrazione e garantisce risultati accurati grazie all’accesso alle risorse di sistema necessarie.
  • D: Cosa succede se il modulo Active Directory non viene trovato nel sistema?
    R: Lo script per individuare i gruppo di cui un utente fa parte visualizza un messaggio di errore in cui si consiglia l’installazione di RSAT con la funzionalità Active Directory.

Implicazioni

L’appartenenza a gruppi non pertinenti può portare all’accesso non autorizzato ai dati o all’impossibilità di accedere a risorse che sono essenziali per alcuni utenti. Grazie all’accuratezza con cui lo script PowerShell elenca i gruppi di cui un utente fa parte, i professionisti IT possono migliorare la sicurezza e garantire la conformità alle normative.

Suggerimenti

  • Esegui sempre lo script per individuare i gruppi di cui un utente fa parte in un ambiente sicuro e controllato. 
  • Verifica regolarmente i gruppi di cui un utente fa parte, soprattutto per i ruoli ad alto privilegio. 
  • Integra i risultati dello script per verificare i gruppi di cui un utente fa parte in una strategia IAM (Identity and Access Management) più ampia.

Considerazioni finali

NinjaOne, con la sua suite completa di soluzioni IT, può essere un partner prezioso per automatizzare, gestire e proteggere gli ambienti IT. Quando script come quello per individuare i gruppi di cui un utente fa parte, di cui abbiamo parlato, vengono combinati con le funzionalità di NinjaOne, i professionisti IT possono migliorare efficienza, precisione e sicurezza. Questa sinergia apre la strada a un approccio proattivo alla gestione e alla sicurezza IT. 

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.

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.