Obtener el usuario actual en PowerShell
-
Use la clase
Win32_ComputerSystem
para obtener el usuario actual en PowerShell - Use variables de entorno para obtener el usuario actual en PowerShell
-
Use el comando
whoami
para 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.
- Unidad Env PowerShell
- Variable
$env
- 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
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.