Archivos de perfil de PowerShell: Introducción

Perfil de PowerShell es esencialmente una secuencia de comandos normal de PowerShell (PS1) que se ejecuta cuando se inicia PowerShell y se utiliza como secuencia de comandos de inicio de sesión para configurar un entorno. Puede agregar sus propias funciones, comandos y alias, importar módulos de PowerShell, establecer variables de entorno, cambiar la apariencia y la configuración de una consola PoSh usando un perfil de PowerShell. Todos los elementos del perfil se aplicarán automáticamente a cada nueva sesión de PowerShell.

El equivalente de los perfiles de PowerShell en Linux son los perfil, .bashrc, .bash_perfil archivos utilizados para ejecutar scripts automáticamente cuando se inicia el shell.

Hay varias rutas en Windows PowerShell para almacenar archivos de perfil. La siguiente tabla muestra todas las rutas por su prioridad (el perfil de mayor prioridad viene primero):

Sendero Descripción
$PSHOMEProfile.ps1 Todos los usuarios Todos los hosts
$PSHOMEMicrosoft.PowerShell_profile.ps1 Todos los usuariosHost actual
$HomeDocumentsPowerShellProfile.ps1 CurrentUserAllHosts
$HomeDocumentsPowerShellMicrosoft.PowerShell_profile.ps1 UsuarioActualHostActual

Si desea configurar una sesión de PowerShell para todos los usuarios de una computadora, debe usar el $PROFILE.AllUsersAllHosts expediente. Para configurar el perfil de PowerShell solo para el usuario actual, guarde su configuración en $PROFILE.CurrentUserCurrentHost.

Para encontrar su perfil de PowerShell, simplemente ejecute el $Profile dominio. De forma predeterminada, la ruta al perfil de PowerShell de un usuario es C:Usuariosnombre de usuarioDocumentosWindowsPowerShellMicrosoft.PowerShell_profile.ps1

  • En Windows PowerShell, el $Home La variable de entorno hace referencia a la carpeta de perfil de usuario actual (C:Usuariosnombre de usuario). $PsHome hace referencia al directorio en el que está instalado PowerShell (C:WindowsSystem32WindowsPowerShellv1.0).
  • En las nuevas versiones de PowerShell Core 7.x, el $PSHome hace referencia a C:Archivos de programaPowerShell7.
  • En PowerShell Core para Linux, el perfil se encuentra en /opt/microsoft/powershell/profile.ps1 o /usr/local/microsoft/powershell/7/profile.ps1.

ISE de PowerShell tiene sus propios archivos de perfil:

$PsHomeMicrosoft.PowerShellISE_profile.ps1 Todos los usuarios
$HomeDocumentsWindowsPowerShellMicrosoft.PowerShellISE_profile.ps1 Usuario actual

código de estudio visual también tiene sus propios perfiles (si se usa como editor de scripts de PowerShell):

$PSHOMEMicrosoft.VSCode_profile.ps1 Todos los usuarios
$HomeDocumentsPowerShellMicrosoft.VSCode_profile.ps1 Usuario actual

Todas las rutas a los perfiles se pueden encontrar en las variables de entorno $PROFILE

$PROFILE | Get-Member -Type NoteProperty

Para acceder a un archivo de perfil (por ejemplo, el perfil de usuario actual):

$PROFILE.CurrentUserCurrentHost o $PROFILE

Para comprobar si se ha creado el perfil de PowerShell del usuario actual, ejecute el siguiente comando:

Test-Path -Path $PROFILE

En este ejemplo, no se ha creado un archivo de perfil de PowerShell para el usuario actual (False).

De forma predeterminada, los archivos de perfil de PowerShell en Windows no se crean.

Comprobación de rutas de perfil de PowerShell en Windows

Para crear un archivo de perfil de PowerShell, si no existe, use el siguiente script:

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

Puedes editarlo con cualquier editor de texto. Por ejemplo, puede editar un archivo de perfil usando:

  • Bloc: notepad $profile
  • ISE de PowerShell: ise $profile
  • Código de estudio visual: code $profile

Intentemos configurar un perfil personalizado de PowerShell. En este ejemplo, ajustaremos el color, el título de la consola (mostrará la versión de PowerShell), cambiaremos el directorio predeterminado de PowerShell y mostraremos el nombre de la computadora en el indicador de la consola PS:

function CustomizePSConsole {
$Host.ui.rawui.foregroundcolor = "cyan"
$hostversion="$($Host.Version.Major)`.$($Host.Version.Minor)"
$Host.UI.RawUI.WindowTitle = "This is PowerShell $hostversion"
Set-Location 'C:PS'
Clear-Host
}
CustomizePSConsole

Mostremos un nombre de computadora en el indicador de la consola PS:

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

Por ejemplo, puede asignar una unidad de red:

New-PSDrive –Name “Tools” –PSProvider "FileSystem" –Root "\MUN-DEV01Scripts"

Cómo crear un perfil de PowerShell en Windows

Si suele usar PowerShell para administrar inquilinos de Azure o Microsoft 365, puede mostrar un aviso para conectarse a su inquilino cada vez que inicie la consola. Si escribe Y, el siguiente script le pedirá que ingrese sus credenciales y se conecte a su arrendatario de Exchange Online:

$connectM365= Read-Host "Connect to Exchange Online? (Y/N)"
If ($connectM365 -eq "Y"){
$LiveCred = Get-Credential
Connect-ExchangeOnline –Credential $LiveCred
}

Puedes agregar el Clear-Host cmdlet al final de su archivo de perfil para borrar la consola. Guarde el archivo de perfil como Microsoft.PowerShell_profile.ps1 y reinicie PowerShell. En el próximo inicio, todas las configuraciones de perfil se aplicarán automáticamente a su consola y su apariencia cambiará.

consola powershell de windows personalizada

Dado que el archivo de perfil de PowerShell es un archivo de script de PS1, preste atención a la configuración de su política de ejecución de PowerShell. De forma predeterminada, los archivos de script de PS1 (incluidos los perfiles) no pueden ejecutarse Restringido política. Para permitir que se aplique el perfil de PowerShell, debe cambiar la política de ejecución de PowerShell a Firmado a distancia. Puede configurar los ajustes mediante un GPO o el siguiente comando:

Set-ExecutionPolicy Remotesigned

Si desea que su perfil de PowerShell también se aplique a sesiones remotas, use el comando:

Invoke-Command -Session $s -FilePath $PROFILE

Si desea ignorar la configuración del perfil al iniciar una sesión de PowerShell, utilice –NoProfile opción al ejecutar PowerShell.exe o pwsh.exe.

Artículos Interesantes