Tengo algunas funciones que me gustaría cargar de forma predeterminada cuando abro un PowerShell administrativo. ¿Hay algún equivalente para decir .bashrc
o .profile
que podría usar para importar automáticamente los scripts cuando inicio el shell?
Tengo algunas funciones que me gustaría cargar de forma predeterminada cuando abro un PowerShell administrativo. ¿Hay algún equivalente para decir .bashrc
o .profile
que podría usar para importar automáticamente los scripts cuando inicio el shell?
Respuestas:
El artículo mencionado en el comentario de jehad explica que hay varios lugares desde los que PowerShell puede cargar un perfil, que es lo que desea. Probablemente desee el por usuario para la consola PowerShell normal. La ruta en la que PowerShell buscará ese archivo se proporciona en la $profile
variable. Puede crear ese archivo y su directorio contenedor con este comando:
New-Item $profile -Type File -Force
Crea un archivo llamado Microsoft.PowerShell_profile.ps1
en una carpeta llamada WindowsPowerShell
debajo de su carpeta Documentos. Luego puede abrirlo con un editor de texto:
notepad $profile
Todo se ejecutará cada vez que inicie la consola PowerShell, sin importar si está elevado o no. Usé este otro artículo para producir una función (que puede usar como cmdlet) para verificar si la instancia actual de PowerShell está elevada. Pon esto en tu nuevo archivo de perfil:
Function Test-Elevated {
$wid = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$prp = New-Object System.Security.Principal.WindowsPrincipal($wid)
$adm = [System.Security.Principal.WindowsBuiltInRole]::Administrator
$prp.IsInRole($adm)
}
Esa función se puede usar en su experiencia normal de PowerShell, pero también puede usarla para ejecutar solo cosas en su secuencia de comandos de perfil cuando se ejecuta elevado:
If (Test-Elevated) {
echo "Be careful!"
} Else {
echo "Eh, do whatever."
}
Dado que este archivo contiene código que se ejecutará automáticamente incluso en una instancia administrativa de PowerShell, no desea que los programas que se ejecutan sin elevación tengan acceso de escritura. Sugiero cambiar su ACL para que solo le dé acceso de lectura a su cuenta de usuario y al mismo tiempo permita que los administradores tengan el control total. (La herencia tendrá que deshabilitarse primero). Luego, solo podrá editar el script desde programas elevados.
Microsoft.PowerShell_profile.ps1
puede cambiar ese nombre largo a solo profile.ps1
? En el primer artículo aparece como$Home\[My ]Documents\WindowsPowerShell\Profile.ps1