Compartir a través de


Acerca de los perfiles

Descripción breve

Describe cómo crear y usar un perfil de PowerShell.

Descripción larga

Puede crear un perfil de PowerShell para personalizar el entorno y agregar elementos específicos de la sesión a cada sesión de PowerShell que inicie.

Un perfil de PowerShell es un script que se ejecuta cuando se inicia PowerShell. Puede utilizar el perfil como un script de inicio de sesión para personalizar el entorno. Puede agregar comandos, alias, funciones, variables, complementos, módulos y unidades de PowerShell. También puede agregar otros elementos específicos de la sesión a su perfil para que estén disponibles en cada sesión sin tener que importarlos o volver a crearlos.

PowerShell admite varios perfiles para usuarios y programas host. Sin embargo, no crea los perfiles por usted. En este tema se describen los perfiles y se describe cómo crear y mantener perfiles en el equipo.

Explica cómo usar el parámetro NoProfile de la consola de PowerShell (PowerShell.exe) para iniciar PowerShell sin ningún perfil. Además, explica el efecto de la directiva de ejecución de PowerShell en los perfiles.

Los archivos de perfil

PowerShell admite varios archivos de perfil. Además, los programas host de PowerShell pueden admitir sus propios perfiles específicos del host.

Por ejemplo, la consola de PowerShell admite los siguientes archivos de perfil básicos. Los perfiles se enumeran en orden de prioridad. El primer perfil tiene la prioridad más alta.

Descripción Ruta
Todos los usuarios, todos los anfitriones $PSHOME\Profile.ps1
Todos los usuarios, anfitrión actual $PSHOME\Microsoft.PowerShell_profile.ps1
Usuario actual, todos los hosts $Home\[My ]Documents\WindowsPowerShell\Profile.ps1
Usuario actual, host actual $Home\[Mis ]Documentos\WindowsPowerShell\
Microsoft.PowerShell_profile.ps1

Las rutas de acceso de perfil incluyen las siguientes variables:

  • La $PSHOME variable, que almacena el directorio de instalación de PowerShell
  • La $Home variable, que almacena el directorio principal del usuario actual

Además, otros programas que hospedan PowerShell pueden admitir sus propios perfiles. Por ejemplo, PowerShell Integrated Scripting Environment (ISE) admite los siguientes perfiles específicos del host.

Descripción Ruta
Todos los usuarios, anfitrión actual $PSHOME\Microsoft.PowerShellISE_profile.ps1
Usuario actual, host actual $Home\[Mis ]Documentos\WindowsPowerShell\
Microsoft.PowerShellISE_profile.ps1

En la Ayuda de PowerShell, el perfil "CurrentUser, Current Host" es el perfil al que se hace referencia con más frecuencia como "su perfil de PowerShell".

Variable $PROFILE

La variable automática $PROFILE almacena las rutas de acceso a los perfiles de PowerShell que están disponibles en la sesión actual.

Para ver una ruta de acceso de perfil, muestre el valor de la variable $PROFILE. También puede usar la variable $PROFILE en un comando para representar una ruta de acceso.

La variable $PROFILE almacena la ruta de acceso al perfil "Usuario actual, Host actual". Los demás perfiles se guardan en las propiedades de nota de la variable $PROFILE.

Por ejemplo, la variable $PROFILE tiene los valores siguientes en la consola de Windows PowerShell.

Descripción Nombre
Usuario actual, host actual $PROFILE
Usuario actual, host actual $PROFILE.CurrentUserCurrentHost
Usuario actual, todos los hosts $PROFILE.CurrentUserAllHosts
Todos los usuarios, anfitrión actual $PROFILE.AllUsersCurrentHost
Todos los usuarios, todos los anfitriones $PROFILE.AllUsersAllHosts

Dado que los valores de la variable $PROFILE cambian para cada usuario y en cada aplicación host, asegúrese de mostrar los valores de las variables de perfil en cada aplicación host de PowerShell que use.

Para ver los valores actuales de la variable $PROFILE, escriba:

$PROFILE | Get-Member -Type NoteProperty

Puede usar la variable $PROFILE en muchos comandos. Por ejemplo, el siguiente comando abre el perfil "Usuario actual, Host actual" en el Bloc de notas:

notepad $PROFILE

El siguiente comando determina si se ha creado un perfil "Todos los usuarios, todos los hosts" en el equipo local:

Test-Path -Path $PROFILE.AllUsersAllHosts

Creación de un perfil

Para crear un perfil de PowerShell, use el siguiente formato de comando:

if (!(Test-Path -Path <profile-name>)) {
  New-Item -ItemType File -Path <profile-name> -Force
}

Por ejemplo, para crear un perfil para el usuario actual en la aplicación host de PowerShell actual, use el siguiente comando:

if (!(Test-Path -Path $PROFILE)) {
  New-Item -ItemType File -Path $PROFILE -Force
}

En este comando, la instrucción If impide sobrescribir un perfil existente. Reemplace el valor del <marcador de posición de ruta de> perfil por la ruta de acceso al archivo de perfil que desea crear.

Nota:

Para crear perfiles de "Todos los usuarios" en Windows Vista y versiones posteriores de Windows, inicie PowerShell con el opción Ejecutar como administrador.

Cómo editar un perfil

Puede abrir cualquier perfil de PowerShell en un editor de texto, como el Bloc de notas.

Para abrir el perfil del usuario actual en la aplicación host de PowerShell actual en el Bloc de notas, escriba:

notepad $PROFILE

Para abrir otros perfiles, especifique el nombre del perfil. Por ejemplo, para abrir el perfil de todos los usuarios de todas las aplicaciones host, escriba:

notepad $PROFILE.AllUsersAllHosts

Para aplicar los cambios, guarde el archivo de perfil y reinicie PowerShell.

Cómo elegir un perfil

Si usa varias aplicaciones host, coloque los elementos que usa en todas las aplicaciones host en el perfil de $PROFILE.CurrentUserAllHosts. Coloque elementos específicos de una aplicación host, como un comando que establece el color de fondo de una aplicación host, en un perfil específico de esa aplicación host.

Si es administrador que personaliza PowerShell para muchos usuarios, siga estas instrucciones:

  • Almacenar los elementos comunes en el perfil de $PROFILE.AllUsersAllHosts
  • Almacenar elementos específicos de una aplicación host en perfiles de $PROFILE.AllUsersCurrentHost específicos de la aplicación host
  • Almacenar elementos para usuarios concretos en los perfiles específicos del usuario

Asegúrese de comprobar la documentación de la aplicación host para ver cualquier implementación especial de perfiles de PowerShell.

Uso de un perfil

Muchos de los elementos que se crean en PowerShell y la mayoría de los comandos que se ejecutan afectan solo a la sesión actual. Al finalizar la sesión, se eliminan los elementos.

Los comandos y elementos específicos de la sesión incluyen variables, variables de preferencia, alias, funciones, comandos (excepto Set-ExecutionPolicy) y módulos de PowerShell que se agregan a la sesión.

Para guardar estos elementos y ponerlos a disposición en todas las sesiones futuras, agréguelos a un perfil de PowerShell.

Otro uso común de los perfiles es guardar funciones, alias y variables de uso frecuente. Al guardar los elementos de un perfil, puede usarlos en cualquier sesión aplicable sin volver a crearlos.

Cómo iniciar un perfil

Al abrir el archivo de perfil, está en blanco. Sin embargo, puede rellenarlo con las variables, alias y comandos que se usan con frecuencia.

Estas son algunas sugerencias para empezar.

Agregue comandos que faciliten la apertura de su perfil

Esto es especialmente útil si utiliza un perfil que no sea el perfil "Usuario actual, host actual". Por ejemplo, agregue el siguiente comando:

function Pro {notepad $PROFILE.CurrentUserAllHosts}

Agregue una función que enumere los alias de cualquier cmdlet

function Get-CmdletAlias ($cmdletname) {
  Get-Alias |
    Where-Object -FilterScript {$_.Definition -like "$cmdletname"} |
      Format-Table -Property Definition, Name -AutoSize
}

Personalización de la consola

function Color-Console {
  $Host.ui.rawui.backgroundcolor = "white"
  $Host.ui.rawui.foregroundcolor = "black"
  $hosttime = (Get-ChildItem -Path $PSHOME\PowerShell.exe).CreationTime
  $hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
  $Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
  Clear-Host
}
Color-Console

Adición de un símbolo del sistema personalizado de PowerShell

function Prompt
{
$env:COMPUTERNAME + "\" + (Get-Location) + "> "
}

Para obtener más información sobre el símbolo del sistema de PowerShell, consulte about_Prompts.

Parámetro NoProfile

Para iniciar PowerShell sin perfiles, use el parámetro NoProfile de PowerShell.exe, el programa que inicia PowerShell.

Para empezar, abra un programa que pueda iniciar PowerShell, como Cmd.exe o PowerShell. También puede usar el cuadro de diálogo Ejecutar en Windows.

Escriba:

PowerShell -NoProfile

Para obtener una lista completa de los parámetros de PowerShell.exe, escriba:

PowerShell -?

Perfiles y directiva de ejecución

La directiva de ejecución de PowerShell determina, en parte, si puede ejecutar scripts y cargar archivos de configuración, incluidos los perfiles. La directiva de ejecución de restringido es la predeterminada. Impide que se ejecuten todos los scripts, incluidos los perfiles. Si utiliza la directiva "Restringido", el perfil no se ejecuta y su contenido no se aplica.

Un comando Set-ExecutionPolicy establece y cambia la directiva de ejecución. Es uno de los pocos comandos que se aplica en todas las sesiones de PowerShell porque el valor se guarda en el Registro. No tiene que configurarlo al abrir la consola y no tiene que almacenar un Set-ExecutionPolicy comando en su perfil.

Perfiles y sesiones remotas

Los perfiles de PowerShell no se ejecutan automáticamente en sesiones remotas, por lo que los comandos que agregan los perfiles no están presentes en la sesión remota. Además, la $PROFILE variable automática no se rellena en sesiones remotas.

Para ejecutar un perfil en una sesión, use el cmdlet Invoke-Command.

Por ejemplo, el siguiente comando ejecuta el perfil "Usuario actual, Host actual" desde el equipo local de la sesión en $s.

Invoke-Command -Session $s -FilePath $PROFILE

El comando siguiente ejecuta el perfil "Usuario actual, Host actual" del equipo remoto en la sesión de $s. Dado que la variable $PROFILE no se rellena, el comando usa la ruta de acceso explícita al perfil. Usamos el operador dot sourcing para que el perfil se ejecute en el ámbito actual en el equipo remoto y no en su propio ámbito.

Invoke-Command -Session $s -ScriptBlock {
  . "$HOME\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1"
}

Después de ejecutar este comando, los comandos que el perfil agrega a la sesión están disponibles en $s.

Véase también

about_Automatic_Variables

about_Functions

about_Prompts

about_Execution_Policies

about_Signing

about_Remote

about_Scopes

Set-ExecutionPolicy