PowerShell Obtenir l'utilisateur actuel

Migel Hewage Nimesha 3 avril 2022
  1. Utilisez la classe Win32_ComputerSystem pour obtenir l’utilisateur actuel dans PowerShell
  2. Utiliser des variables d’environnement pour obtenir l’utilisateur actuel dans PowerShell
  3. Utilisez la commande whoami pour obtenir l’utilisateur actuel dans PowerShell
PowerShell Obtenir l'utilisateur actuel

Lorsque vous travaillez avec Windows, vous aurez presque certainement besoin de savoir quels comptes d’utilisateurs sont activement connectés à un ordinateur à un moment donné. Heureusement, PowerShell peut obtenir des utilisateurs actuels sur des machines distantes ou locales.

Il existe de nombreuses méthodes pour récupérer les utilisateurs actuels connectés à une machine sans utiliser PowerShell. À l’aide de PowerShell, vous pouvez également modifier les résultats en les traitant comme des objets.

Par exemple, si vous exécutez un script demandant les informations d’identification de l’utilisateur, PowerShell peut générer dynamiquement le nom d’utilisateur, vous laissant uniquement le mot de passe à saisir manuellement.

Utilisez la classe Win32_ComputerSystem pour obtenir l’utilisateur actuel dans PowerShell

Nous utiliserons les cmdlets PowerShell, à savoir Get-CimInstance et Get-WMIObject. Ceux-ci nous permettent d’obtenir l’utilisateur actuel en utilisant la classe WMI (Windows Management Instrumentation) sur des ordinateurs distants ou locaux. Appelez l’une des cmdlets suivantes en adressant la classe Win32 ComputerSystem dans PowerShell pour obtenir l’utilisateur actuel.

La propriété Username est l’un des attributs de la classe Win32 ComputerSystem. Pour ce faire, lancez PowerShell et exécutez les commandes ci-dessous.

Get-CimInstance :

(Get-CimInstance -ClassName Win32_ComputerSystem).Username

Get-WMIObject :

(Get-WMIObject -ClassName Win32_ComputerSystem).Username

Production :

DESKTOP-DelftStack\DefltStack

Ici, les deux commandes obtiennent le même résultat. Cependant, il convient de noter que les commandes ci-dessus ne donnent des résultats que si l’utilisateur est directement connecté. S’il s’agit d’une connexion à distance, le nom d’utilisateur sera vide.

Utiliser des variables d’environnement pour obtenir l’utilisateur actuel dans PowerShell

Une autre technique pour obtenir l’utilisateur actuel sur une machine utilisant PowerShell consiste à récupérer des informations à partir de variables d’environnement. Les données du système d’exploitation, telles que le nom d’utilisateur de l’utilisateur actuel, sont représentées par les variables d’environnement. Cependant, il existe principalement trois façons de travailler avec des variables d’environnement ; il obtient les mêmes résultats quelle que soit la méthode.

Les trois façons sont ci-dessous.

  1. Env PowerShell Drive
  2. Variable $env
  3. Classe d’environnement .NET

Les méthodes ci-dessus sont expliquées plus en détail ci-dessous.

Env PowerShell Drive

Les variables d’environnement sont mises en cache par PowerShell et mises à disposition via le lecteur Env:, qui est un lecteur PowerShell (PSDrive). Les PSDrives sont des emplacements de stockage accessibles comme un lecteur sur un ordinateur (par exemple, C :), mais exclusivement via PowerShell.

Le lecteur Env: est automatiquement créé lorsque vous démarrez une session PowerShell. Étant donné que Env: est un lecteur, vous pouvez accéder à son contenu à l’aide de la cmdlet Get-ChildItem, qui fonctionne de la même manière que la liste des éléments d’un dossier ou d’un lecteur du système de fichiers.

L’utilisateur peut être récupéré à l’aide de la commande suivante.

Get-ChildItem Env:\USERNAME

Sortir

Name                           Value
----                           -----
USERNAME                       DelftStack

Afin d’obtenir la valeur uniquement, la commande suivante peut être utilisée.

(Get-ChildItem Env:\USERNAME).Value

Production :

DelftStack

On peut voir que la commande renvoie la valeur du nom d’utilisateur sous forme de chaîne.

Variable $env

Une autre méthode consiste à traiter le lecteur env comme une variable dans laquelle vous pouvez utiliser les commandes suivantes :

$env:username

Production :

DelftStack

Classe d’environnement .NET

La classe Environment a un champ Username, qui a la même valeur que la variable $env : le nom d’utilisateur actuel de l’utilisateur. Exécutez la commande PowerShell ci-dessous pour obtenir la valeur du champ username.

[System.Environment]::UserName

Production :

DelftStack

Classe .NET WindowsIdentity

Une autre classe à exécuter pour obtenir l’utilisateur actuel dans Windows est la classe WindowsIdentity. Il a la méthode GetCurrentname, qui peut être utilisée comme indiqué ci-dessous.

([System.Security.Principal.WindowsIdentity]::GetCurrent().Name).Split('\')[1]

Production :

DelftStack

Utilisez la commande whoami pour obtenir l’utilisateur actuel dans PowerShell

La commande whoami est un fichier exécutable qui réside dans le dossier %WINDIR%\System32, et le nom du fichier est whoami.exe. Lorsque nous exécutons la commande ci-dessous, il en résulte le nom d’utilisateur au format domaine/nom d’utilisateur.

whoami

Production :

DESKTOP-DelftStack\DefltStack
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Article connexe - PowerShell User