En este tutorial veremos sobre los perfiles de PowerShell y su uso. Los perfiles de PowerShell te ayudan a personalizar tu entorno y añadir elementos para cada sesión de PowerShell que inicies. El perfil de PowerShell es un script que se ejecuta cada vez que vamos a iniciar PowerShell. Puedes utilizar un perfil PowerShell como un script de inicio de sesión para personalizar el entorno. Usando un perfil PowerShell, puedes añadir comandos, alias, funciones, variables, snap-ins, módulos, PSDrives y cualquier otro elemento específico de la sesión en tu evnironmet. No tendrás que importarlos o volver a crearlos cada vez que ejecutes PowerShell. Se cargarán automáticamente. PowerShell admite varios perfiles para usuarios y programas anfitriones. PowerShell no crea ningún perfil para usted.
Si desea comandos específicos de la sesión, variables, variables de preferencia, alias, funciones, comandos (excepto Set-ExecutionPolicy) y módulos de PowerShell que utiliza con frecuencia, puede utilizar perfiles para cargar en todas las sesiones futuras.
Archivos de perfil
La consola PowerShell soporta los siguientes perfiles:
-
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
– Usuario actual, Host actual -
$Home\Documents\PowerShell\Profile.ps1
– Usuario actual, Todos los Hosts -
$PsHome\Microsoft.PowerShell_profile.ps1
– Todos los usuarios, Host actual -
$PsHome\Profile.ps1
– Todos los usuarios, Todos los Hosts
Los perfiles anteriores se muestran en orden de precedencia. El primer perfil de la lista tiene el orden de precedencia más alto. Como puede ver en los perfiles anteriores, tenemos dos variables. Las variables $PSHome
y $Home
presentan los siguientes valores.
-
$PSHome
– Almacena el directorio de instalación de PowerShell -
$Home
– Almacena el directorio de inicio del usuario actual
Otros programas que alojan PowerShell pueden soportar sus propios perfiles. PowerShell Integrated Scripting Environment (ISE) admite los siguientes perfiles específicos de host.
-
$Home\Documents\WindowsPowerShell\Microsoft.PowerShellISE_profile.ps1
– Usuario actual, Host actual -
$PsHome\Microsoft.PowerShellISE_profile.ps1
– Todos los usuarios, Host actual
Según Microsoft, en la Ayuda de PowerShell, el perfil «Usuario actual, Host actual» es el perfil al que más a menudo se hace referencia como «su perfil de PowerShell».
Variable de perfil
En PowerShell tenemos una variable automática llamada $Profile
. En la variable $Profile
se almacenan todas las rutas de los perfiles de PowerShell que están disponibles en la sesión actual. Al ver la variable $Profile
, verás la ruta del perfil.
La variable $Profile
almacena la ruta del perfil «Usuario actual, Host actual». Los otros perfiles se guardan en las propiedades de nota de la variable $Profile
.
Se puede especificar un perfil utilizando las propiedades de la variable. En la consola de Windows PowerShell, tenemos los siguientes valores en la variable $Profile
.
-
$Profile
– Usuario actual, Host actual -
$Profile.CurrentUserCurrentHost
– Usuario actual, Host actual -
$Profile.CurrentUserAllHosts
– Usuario actual, Todos los Hosts -
$Profile.AllUsersCurrentHost
– Todos los usuarios, Host actual -
$Profile.AllUsersAllHosts
– Todos los usuarios, Todos los Hosts
Puedes utilizar la variable $Profile
en tus comandos.
Código:
Test-Path -Path $PROFILETest-Path -Path $PROFILE.CurrentUserCurrentHostTest-Path -Path $PROFILE.CurrentUserAllHostsTest-Path -Path $PROFILE.AllUsersCurrentHostTest-Path -Path $PROFILE.AllUsersAllHosts
Salida:
Los comandos anteriores prueban si el perfil especificado ha sido creado. Como puedes ver la respuesta es falsa para todos ellos. Como hemos mencionado antes, los perfiles no se crean por defecto. Tendrás que crearlos.
Crear un perfil
Para crear un perfil necesitas usar el siguiente comando.
Código:
New-Item -ItemType File -Path $profile -Force
El comando anterior creará un perfil para «Usuario actual, Host actual».
Nota que lo anterior reemplazará cualquier perfil existente. Si quiere asegurarse de que no reemplazará ningún perfil que ya exista y perderá los cambios que ya haya aplicado, puede probar lo siguiente.
Código:
if (-not (Test-Path -Path $profile.AllUsersAllHosts)){ New-Item -ItemType File -Path $profile.AllUsersAllHosts -Force}
El comando anterior comprobará si existe un perfil para «Todos los usuarios, todos los hosts» y, si no existe, creará el perfil.
Para crear un perfil tendrá que ejecutar la consola PowerShell como administrador. Esto se aplica a partir de Windows Vista y versiones posteriores.
Editar un perfil
Si existe un perfil y necesita aplicar algunos cambios o adiciones, necesita usar un editor de texto para editar el perfil. Usando el bloc de notas es una forma fácil de editar el perfil.
Código:
notepad $profile
Como puedes ver abajo mi perfil actual está configurado para proporcionar un mensaje de Bienvenida cuando abro mi consola.
Ahora usaré el comando anterior para aplicar algunos cambios a mi perfil.
Abajo están los cambios que he aplicado.
Luego, cuando he reiniciado la consola de PowerShell, como podéis ver los cambios se han aplicado.
Directrices para los perfiles
A continuación os voy a dar unas directrices sobre la configuración de vuestros perfiles, tal y como las proporciona Microsoft.
Si utiliza varias aplicaciones de host, ponga los elementos que utiliza en todas las aplicaciones de host en su
$Profile.CurrentUserAllHosts
perfil. Ponga los elementos que son específicos de una aplicación de host, como un comando que establece el color de fondo para una aplicación de host, en un perfil que es específico para esa aplicación de host.Si es un administrador que está personalizando PowerShell para muchos usuarios, siga estas directrices:
- Almacene los elementos comunes en el perfil
$profile.AllUsersAllHosts
- Almacene los elementos que son específicos de una aplicación de host en los perfiles
$profile.AllUsersCurrentHost
que son específicos de la aplicación de host- Almacene los elementos para usuarios particulares en los perfiles específicos de usuario
Asegúrese de revisar la documentación de la aplicación de host para cualquier implementación especial de los perfiles de PowerShell.
Sin perfil
Aunque haya creado perfiles para cargar cada vez que abra su consola, se le permite ejecutar PowerShell sin que se cargue ningún perfil. Usted puede hacer esto mediante la ejecución de PowerShell con -NoProfile
parámetro. Esto puede hacerse desde cmd.exe, el cuadro de diálogo Ejecutar o el propio PowerShell.
Código:
PowerShell -NoProfile
Política de ejecución
La política de ejecución de PowerShell determina si puede ejecutar scripts y cargar archivos de configuración, incluyendo los perfiles. La política de ejecución «Restringida» es la predeterminada. Puede encontrar más información sobre la política de ejecución de PowerShell aquí. Si utiliza la política «Restringida», impide la ejecución de todos los scripts, incluidos los perfiles. El contenido del perfil no se aplica. Un comando Set-ExecutionPolicy
establece y cambia su política de ejecución en todas las sesiones de PowerShell porque el valor se guarda en el registro. No es necesario establecerlo al abrir la consola, ni guardar un comando Set-ExecutionPolicy
en el perfil.
Perfil en sesión remota
Los perfiles de PowerShell no se ejecutan automáticamente en sesiones remotas, por lo que los comandos que los perfiles añaden no están presentes en la sesión remota. Además, la variable automática $Profile
no se rellena en las sesiones remotas.
Si queremos ejecutar el perfil desde nuestro equipo local, a una sesión remota, necesitamos utilizar el cmdlet Invoke-Command
.
El ejemplo siguiente ejecutará el perfil local a una sesión remota.
Código:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -FilePath $profile
Salida:
Como el perfil no se rellenará en la sesión remota, también podemos cargar el perfil remoto en la sesión. Compruebe el siguiente ejemplo.
Código:
$MySession = New-PSSession -ComputerName RemoteComputerInvoke-Command -Session $MySession -ScriptBlock {. "$env:USERPROFILE\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"}
Salida:
Espero que el tutorial sobre PowerShell Perfiles es útil.
Por favor, hágame saber sus comentarios y pensamientos.
Su retroalimentación es apreciada.
Enlaces Relacionados
- Tutoriales de PowerShell
- Scripts de PowerShell
- Acerca de los Perfiles | Microsoft Docs
- Variables Automáticas de PowerShell
- Operadores Lógicos de PowerShell
- Política de Ejecución de PowerShell
- Test-Ruta – Microsoft Docs
- Nuevo-Elemento – Microsoft Docs
- Escribir salida – Microsoft Docs
- Set-ExecutionPolicy – Microsoft Docs
- Invoke-Command – Microsoft Docs
.