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.
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.
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"
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á.
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
–NoProfile
opción al ejecutar PowerShell.exe
o pwsh.exe
.Artículos Interesantes
Contenido