Aujourd’hui, nous nous penchons sur un script PowerShell spécialement conçu à cet effet : voir tous les utilisateurs locaux. PowerShell est un outil puissant pour les professionnels de l’informatique, souvent utilisé pour sa capacité à automatiser des tâches et à extraire des données de manière optimale. Une tâche cruciale fréquemment rencontrée par les fournisseurs de services gérés (MSP) et les administrateurs de systèmes consiste à dresser la liste des utilisateurs d’un système informatique.
Contexte
Il est indéniable que dans l’environnement informatique actuel, qui évolue rapidement, la capacité d’extraire rapidement des données sur les utilisateurs du système est d’une valeur inestimable. C’est particulièrement vrai dans les grandes entreprises ou lors de la mise en place de nouveaux équipements ou logiciels. Les administrateurs système et les entreprises MSP ont souvent besoin de savoir qui a accès à quoi et quand. Le script PowerShell fourni répond à ce besoin en répertoriant les utilisateurs locaux sur une machine Windows, ce qui permet aux professionnels d’obtenir rapidement des informations.
Le script
#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" }
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Description détaillée
Au fond, le script est assez simple. Il commence par définir un paramètre, $AllUsers, qui, lorsqu’il est invoqué, inclut les utilisateurs activés et désactivés dans son résultat. Dans le bloc “process”, le script vérifie d’abord l’architecture du système et la disponibilité de la cmdlet Get-LocalUser. En cas de non-concordance ou si la cmdlet n’est pas disponible, la commande net.exe user est utilisée. Les données obtenues par l’une ou l’autre méthode sont ensuite traitées pour dresser la liste et voir tous les utilisateurs locaux. Lorsque la commande net.exe user est utilisée, le script récupère le statut de l’utilisateur, en vérifiant si chaque compte est actif. Ces données sont ensuite présentées de manière structurée. Dans les scénarios où Get-LocalUser est disponible, il récupère et répertorie directement les utilisateurs, en ne filtrant que ceux qui sont activés, à moins que le paramètre $AllUsers ne soit invoqué.
Cas d’utilisation potentiels
Imaginez une informaticienne, Jane, en train de déployer une nouvelle mise à jour logicielle dans son entreprise. Avant de déployer la mise à jour, elle doit vérifier les comptes d’utilisateurs sur chaque machine pour s’assurer que toutes les licences logicielles sont correctement attribuées. Au lieu de vérifier manuellement chaque ordinateur, elle utilise le script PowerShell, ce qui lui permet d’économiser des heures de son précieux temps.
Comparaisons
Bien que le script utilise la cmdlet Get-LocalUser dans la mesure du possible, son approche alternative utilisant net.exe user est un clin d’œil aux anciens systèmes. D’autres scripts peuvent s’appuyer uniquement sur des cmdlets ou des méthodes plus récentes. La double approche du script fourni garantit la compatibilité avec un large éventail de systèmes Windows, ce qui le rend polyvalent dans divers environnements.
FAQ
- Le script peut-il être utilisé sur n’importe quelle machine Windows ?
Il est conçu pour les systèmes d’exploitation Windows 7 et Windows Server 2012.
- Que faire si Get-LocalUser n’est pas disponible sur mon système ?
Le script recourt automatiquement à la commande net.exe user si Get-LocalUser n’est pas disponible ou s’il y a une incompatibilité d’architecture.
Implications
La liste des utilisateurs d’un ordinateur peut fournir un aperçu des points d’accès potentiels pour le personnel non autorisé. Dans le contexte de la sécurité informatique, la compréhension de ces utilisateurs et de leurs statuts est une étape fondamentale pour s’assurer que seules les personnes autorisées y ont accès.
Recommandations
- Mettez régulièrement à jour votre PowerShell pour avoir accès aux dernières cmdlets.
- Exécutez toujours des scripts provenant de sources fiables afin de garantir la sécurité du système.
- Vérifiez régulièrement les listes d’utilisateurs pour s’assurer que des comptes non autorisés n’ont pas été ajoutés.
Conclusion
NinjaOne, avec ses solutions de gestion informatique performantes, complète des outils tels que ce script PowerShell. Lorsque les professionnels de l’informatique listent les utilisateurs locaux à l’aide de notre script PowerShell, ils peuvent ensuite utiliser la plateforme complète de NinjaOne pour gérer, surveiller et sécuriser ces utilisateurs, en veillant à ce que l’infrastructure informatique reste à la fois optimisée et sécurisée.