Obtener el usuario actual en PowerShell

Migel Hewage Nimesha 3 abril 2022
  1. Use la clase Win32_ComputerSystem para obtener el usuario actual en PowerShell
  2. Use variables de entorno para obtener el usuario actual en PowerShell
  3. Use el comando whoami para obtener el usuario actual en PowerShell
Obtener el usuario actual en PowerShell

Cuando trabaje con Windows, es casi seguro que necesitará saber qué cuentas de usuario iniciaron sesión activamente en una computadora en algún momento. Afortunadamente, PowerShell puede obtener usuarios actuales en máquinas remotas o locales.

Hay muchos métodos para recuperar los usuarios actuales que iniciaron sesión en una máquina sin usar PowerShell. Con PowerShell, también puede modificar los resultados tratándolos como objetos.

Por ejemplo, si ejecuta un script que solicita las credenciales de usuario, PowerShell puede generar dinámicamente el nombre de usuario, dejándolo solo con la contraseña para ingresar manualmente.

Use la clase Win32_ComputerSystem para obtener el usuario actual en PowerShell

Usaremos los cmdlets de PowerShell, a saber, Get-CimInstance y Get-WMIObject. Estos nos permiten obtener el usuario actual mediante el uso de la clase WMI (Instrumentación de administración de Windows) en computadoras remotas o locales. Invoque cualquiera de los siguientes cmdlets que aborden la clase Win32 ComputerSystem en PowerShell para obtener el usuario actual.

La propiedad Username es uno de los atributos de la clase Win32 ComputerSystem. Para hacerlo, inicie PowerShell y ejecute los comandos que se muestran a continuación.

Obtener-CimInstance:

(Get-CimInstance -ClassName Win32_ComputerSystem).Username

Obtener WMIObject:

(Get-WMIObject -ClassName Win32_ComputerSystem).Username

Producción :

DESKTOP-DelftStack\DefltStack

Aquí ambos comandos obtienen el mismo resultado. Sin embargo, debe tenerse en cuenta que los comandos anteriores solo dan resultados cuando el usuario inicia sesión directamente. Si se trata de un inicio de sesión remoto, el nombre de usuario estará en blanco.

Use variables de entorno para obtener el usuario actual en PowerShell

Otra técnica para obtener el usuario actual en una máquina usando PowerShell es recuperar información de las variables de entorno. Los datos del sistema operativo, como el nombre de usuario del usuario actual, están representados por las variables de entorno. Sin embargo, existen principalmente tres formas de trabajar con variables de entorno; obtiene los mismos resultados sea cual sea el método.

Las tres formas están a continuación.

  1. Unidad Env PowerShell
  2. Variable $env
  3. Clase Environment .NET

Los métodos anteriores se explican más adelante.

Unidad Env PowerShell

PowerShell almacena en caché las variables de entorno y las pone a disposición a través de la unidad Env:, que es una unidad PowerShell (PSDrive). Los PSDrive son ubicaciones de almacenamiento a las que se puede acceder como una unidad en una computadora (por ejemplo, C:), pero exclusivamente a través de PowerShell.

La unidad Env: se crea automáticamente cuando inicia una sesión de PowerShell. Debido a que Env: es una unidad, puede acceder a su contenido mediante el cmdlet Get-ChildItem, que funciona de manera similar a enumerar los elementos de una carpeta o unidad del sistema de archivos.

El usuario se puede recuperar usando el siguiente comando.

Get-ChildItem Env:\USERNAME

Producción

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

Para obtener solo el valor, se puede usar el siguiente comando.

(Get-ChildItem Env:\USERNAME).Value

Producción :

DelftStack

Se puede ver que el comando devuelve el valor del nombre de usuario como una cadena.

Variable $env

Otra forma es tratar la unidad env como una variable en la que puede usar los siguientes comandos a continuación:

$env:username

Producción :

DelftStack

Clase Environment de .NET

La clase Environment tiene un campo de nombre de usuario, que tiene el mismo valor que la variable $env: el nombre de usuario del usuario actual. Ejecute el siguiente comando de PowerShell para obtener el valor del campo de nombre de usuario.

[System.Environment]::UserName

Producción :

DelftStack

Clase WindowsIdentity de .NET

Otra clase a ejecutar para obtener el usuario actual en Windows es la clase WindowsIdentity. Tiene el método GetCurrentname, que se puede usar como se muestra a continuación.

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

Producción :

DelftStack

Use el comando whoami para obtener el usuario actual en PowerShell

El comando whoami es un archivo ejecutable que reside en la carpeta %WINDIR%\System32, y el nombre del archivo es whoami.exe. Cuando ejecutamos el siguiente comando, da como resultado el nombre de usuario en formato de dominio/nombre de usuario.

whoami

Producción :

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.

Artículo relacionado - PowerShell User