Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un perfil de PowerShell es un script que se ejecuta cuando se inicia PowerShell. Puede usar el perfil para personalizar el entorno. Ustedes pueden:
- Adición de alias, funciones y variables
- Cargar módulos
- Creación de unidades de PowerShell
- Ejecución de comandos arbitrarios
- Cambiar la configuración de preferencias
Al colocar esta configuración en el perfil, se garantiza que estén disponibles cada vez que inicie PowerShell en el sistema.
Nota:
Para ejecutar scripts en Windows, la directiva de ejecución de PowerShell debe establecerse RemoteSigned
como mínimo. Las directivas de ejecución no se aplican a macOS y Linux. Para obtener más información, consulte about_Execution_Policy.
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.
Hay cuatro perfiles posibles disponibles para admitir distintos ámbitos de usuario y diferentes hosts de PowerShell. Las rutas de acceso completas para cada script de perfil se almacenan en las siguientes propiedades de miembro de $PROFILE
.
- AllUsersAllHosts
- AllUsersCurrentHost
- CurrentUserAllHosts
- CurrentUserCurrentHost
Puede crear scripts de perfil que se ejecuten para todos los usuarios o solo para un usuario, CurrentUser. Los perfiles CurrentUser se almacenan en la ruta de acceso del directorio principal del usuario. La ubicación varía en función del sistema operativo y de la versión de PowerShell que use.
De forma predeterminada, al hacer referencia a la $PROFILE
variable, se devuelve la ruta de acceso al perfil "Usuario actual, Host actual". Se puede acceder a la otra ruta de acceso de perfiles a través de las propiedades de la $PROFILE
variable.
El comando siguiente muestra las ubicaciones de perfil predeterminadas en Windows.
PS> $PROFILE | Select-Object *
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\username\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Length : 69
El siguiente comando muestra las ubicaciones de perfil predeterminadas en Ubuntu Linux.
$PROFILE | Select-Object *
AllUsersAllHosts : /opt/microsoft/powershell/7/profile.ps1
AllUsersCurrentHost : /opt/microsoft/powershell/7/Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : /home/username/.config/powershell/profile.ps1
CurrentUserCurrentHost : /home/username/.config/powershell/Microsoft.PowerShell_profile.ps1
Length : 67
También hay perfiles que se ejecutan para todos los hosts de PowerShell o hosts específicos. El script de perfil de cada host de PowerShell tiene un nombre único para ese host. Por ejemplo, el nombre de archivo del host de consola estándar en Windows o la aplicación de terminal predeterminada en otras plataformas es Microsoft.PowerShell_profile.ps1
. Para Visual Studio Code (VS Code), el nombre de archivo es Microsoft.VSCode_profile.ps1
.
Para obtener más información, vea about_Profiles.
Creación de un perfil personal
Al instalar PowerShell por primera vez en un sistema, los archivos de script de perfil y los directorios a los que pertenecen no existen. El comando siguiente crea el archivo de script de perfil "Usuario actual, host actual" si no existe.
if (!(Test-Path -Path $PROFILE)) {
New-Item -ItemType File -Path $PROFILE -Force
}
El parámetro Force del New-Item
cmdlet crea las carpetas necesarias cuando no existen.
Después de crear el archivo de script, puede usar el editor favorito para personalizar el entorno de shell.
Adición de personalizaciones al perfil
En los artículos anteriores se habló sobre el uso de la finalización de tabulaciones, los predictores de comandos y los alias. En estos artículos se muestran los comandos usados para cargar los módulos necesarios, crear completadores personalizados, definir enlaces de claves y otras opciones de configuración. Estos son los tipos de personalizaciones que desea tener disponibles en cada sesión interactiva de PowerShell. El script de perfil es el lugar para esta configuración.
La manera más sencilla de editar el script de perfil es abrir el archivo en su editor de código favorito. Por ejemplo, el siguiente comando abre el perfil en VS Code.
code $PROFILE
También puede usar notepad.exe
en Windows, vi
en Linux o en cualquier otro editor de texto.
El siguiente script de perfil tiene ejemplos para muchas de las personalizaciones mencionadas en los artículos anteriores. Puede usar cualquiera de estas opciones de configuración en su propio perfil.
## Map PSDrives to other registry hives
if (!(Test-Path HKCR:)) {
$null = New-PSDrive -Name HKCR -PSProvider Registry -Root HKEY_CLASSES_ROOT
$null = New-PSDrive -Name HKU -PSProvider Registry -Root HKEY_USERS
}
## Customize the prompt
function prompt {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = [Security.Principal.WindowsPrincipal] $identity
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
$prefix = if (Test-Path Variable:/PSDebugContext) { '[DBG]: ' } else { '' }
if ($principal.IsInRole($adminRole)) {
$prefix = "[ADMIN]:$prefix"
}
$body = 'PS ' + $PWD.path
$suffix = $(if ($NestedPromptLevel -ge 1) { '>>' }) + '> '
"${prefix}${body}${suffix}"
}
## Create $PSStyle if running on a version older than 7.2
## - Add other ANSI color definitions as needed
if ($PSVersionTable.PSVersion.ToString() -lt '7.2.0') {
# define escape char since "`e" may not be supported
$esc = [char]0x1b
$PSStyle = [pscustomobject]@{
Foreground = @{
Magenta = "${esc}[35m"
BrightYellow = "${esc}[93m"
}
Background = @{
BrightBlack = "${esc}[100m"
}
}
}
## Set PSReadLine options and keybindings
$PSROptions = @{
ContinuationPrompt = ' '
Colors = @{
Operator = $PSStyle.Foreground.Magenta
Parameter = $PSStyle.Foreground.Magenta
Selection = $PSStyle.Background.BrightBlack
InLinePrediction = $PSStyle.Foreground.BrightYellow + $PSStyle.Background.BrightBlack
}
}
Set-PSReadLineOption @PSROptions
Set-PSReadLineKeyHandler -Chord 'Ctrl+f' -Function ForwardWord
Set-PSReadLineKeyHandler -Chord 'Enter' -Function ValidateAndAcceptLine
## Add argument completer for the dotnet CLI tool
$scriptblock = {
param($wordToComplete, $commandAst, $cursorPosition)
dotnet complete --position $cursorPosition $commandAst.ToString() |
ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock
Este script de perfil proporciona ejemplos para la siguiente personalización:
- Agrega dos psDrive nuevos para los demás subárboles del registro raíz.
- Crea un símbolo del sistema personalizado que cambia si se ejecuta en una sesión con privilegios elevados.
- Configura PSReadLine y agrega enlace de claves. La configuración de color usa la característica $PSStyle para definir la configuración de color ANSI.
- Agrega la finalización de tabulación para la herramienta dotnet CLI . La herramienta proporciona parámetros para ayudar a resolver los argumentos de la línea de comandos. El bloque de script de Register-ArgumentCompleter usa esa característica para proporcionar la finalización de la pestaña.