about_Profiles
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 usar el perfil como script de inicio para personalizar el entorno. Puede agregar comandos, alias, funciones, variables, módulos, unidades de PowerShell y mucho más. También puede agregar otros elementos específicos de la sesión al perfil para que estén disponibles en cada sesión sin tener que importarlos ni volver a crearlos.
PowerShell admite varios perfiles para usuarios y programas host. Sin embargo, no crea los perfiles automáticamente.
Tipos y ubicaciones de perfil
PowerShell admite varios archivos de perfil que tienen como ámbito los usuarios y los hosts de PowerShell. Puede tener cualquiera o todos estos perfiles en el equipo.
La consola de PowerShell admite los siguientes archivos de perfil básicos. Estas rutas de acceso de archivo son las ubicaciones predeterminadas.
- Todos los usuarios, todos los hosts
- Windows:
$PSHOME\Profile.ps1
- Linux:
/opt/microsoft/powershell/7/profile.ps1
- macOS:
/usr/local/microsoft/powershell/7/profile.ps1
- Windows:
- Todos los usuarios, host actual
- Windows:
$PSHOME\Microsoft.PowerShell_profile.ps1
- Linux:
/opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- macOS:
/usr/local/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
- Windows:
- Usuario actual, todos los hosts
- Windows:
$HOME\Documents\PowerShell\Profile.ps1
- Linux:
~/.config/powershell/profile.ps1
- macOS:
~/.config/powershell/profile.ps1
- Windows:
- Usuario actual, Host actual
- Windows:
$HOME\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
- Linux:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- macOS:
~/.config/powershell/Microsoft.PowerShell_profile.ps1
- Windows:
Nota:
En Windows, la ubicación de la Documents
carpeta se puede cambiar mediante el redireccionamiento de carpetas o OneDrive. No se recomienda redirigir la Documents
carpeta a un recurso compartido de red ni incluirla en OneDrive. La redirección de la carpeta puede provocar que los módulos no se carguen y creen errores en los scripts de perfil.
Para obtener información sobre cómo quitar la carpeta de la Documents
administración de OneDrive, consulte la documentación de OneDrive.
Los scripts de perfil se ejecutan en el orden indicado. Esto significa que cualquiera de los demás scripts de perfil puede invalidar los cambios realizados en el perfil AllUsersAllHosts . El perfil CurrentUserCurrentHost siempre se ejecuta en último lugar. En la Ayuda de PowerShell, el perfil CurrentUserCurrentHost es el perfil que se conoce con más frecuencia como perfil de PowerShell.
Otros programas que hospedan PowerShell pueden admitir sus propios perfiles. Por ejemplo, Visual Studio Code (VS Code) admite los siguientes perfiles específicos del host.
- Todos los usuarios, Host actual:
$PSHOME\Microsoft.VSCode_profile.ps1
- Usuario actual, Host actual:
$HOME\Documents\PowerShell\Microsoft.VSCode_profile.ps1
Las rutas de acceso de perfil incluyen las siguientes variables:
- La
$PSHOME
variable almacena el directorio de instalación de PowerShell. - La
$HOME
variable almacena el directorio principal del usuario actual.
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 $PROFILE
variable. También puede usar la $PROFILE
variable en un comando para representar una ruta de acceso.
La $PROFILE
variable almacena la ruta de acceso al perfil "Usuario actual, Host actual". Los demás perfiles se guardan en las propiedades de nota de la $PROFILE
variable.
Por ejemplo, la $PROFILE
variable tiene los siguientes valores en la consola de Windows PowerShell.
- Usuario actual, Host actual:
$PROFILE
- Usuario actual, Host actual:
$PROFILE.CurrentUserCurrentHost
- Usuario actual, todos los hosts:
$PROFILE.CurrentUserAllHosts
- Todos los usuarios, host actual:
$PROFILE.AllUsersCurrentHost
- Todos los usuarios, todos los hosts:
$PROFILE.AllUsersAllHosts
Dado que los valores de la $PROFILE
variable 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 $PROFILE
variable, escriba:
$PROFILE | Select-Object *
Puede usar la $PROFILE
variable en muchos comandos. Por ejemplo, el siguiente comando abre el perfil "Usuario actual, Host actual" en 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 if
instrucción impide que sobrescriba un perfil existente. Reemplace el valor de la $PROFILE
variable 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 la opción Ejecutar como administrador .
Cómo editar un perfil
Puede abrir cualquier perfil de PowerShell en un editor de texto, como Bloc de notas.
Para abrir el perfil del usuario actual en la aplicación host de PowerShell actual en 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 $PROFILE.CurrentUserAllHosts
perfil. 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
$PROFILE.AllUsersAllHosts
perfil - Almacenar elementos específicos de una aplicación host en
$PROFILE.AllUsersCurrentHost
perfiles 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 de PowerShell, variables de entorno, alias, funciones, comandos y módulos de PowerShell que agregue 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 para los perfiles es guardar funciones, alias y variables usados con frecuencia. 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.
Adición de una función que muestra alias para 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 CustomizeConsole {
$hosttime = (Get-ChildItem -Path $PSHOME\pwsh.exe).CreationTime
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "PowerShell $hostversion ($hosttime)"
Clear-Host
}
CustomizeConsole
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.
Para ver otros ejemplos de perfil, consulte Personalización del entorno de shell.
Parámetro NoProfile
Para iniciar PowerShell sin perfiles, use el parámetro NoProfile de pwsh.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:
pwsh -NoProfile
Para obtener una lista completa de los parámetros de pwsh.exe
, escriba:
pwsh -?
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 restringida es la predeterminada. Impide que se ejecuten todos los scripts, incluidos los perfiles. Si usa la directiva "Restringida", el perfil no se ejecuta y no se aplica su contenido.
Un Set-ExecutionPolicy
comando establece y cambia la directiva de ejecución. es uno de los pocos comandos que se aplican en todas las sesiones de PowerShell porque el valor se guarda en el Registro. No es necesario establecerlo al abrir la consola y no tiene que almacenar un Set-ExecutionPolicy
comando en el 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 siguiente comando ejecuta el perfil "Usuario actual, Host actual" del equipo remoto en la sesión de $s
. Dado que la $PROFILE
variable 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
.