¿Powershell tiene algún tipo de equivalente .bashrc?

22

Tengo algunas funciones que me gustaría cargar de forma predeterminada cuando abro un PowerShell administrativo. ¿Hay algún equivalente para decir .bashrco .profileque podría usar para importar automáticamente los scripts cuando inicio el shell?

leeand00
fuente
¿Quizás el perfil de PowerShell ( blogs.technet.microsoft.com/heyscriptingguy/2012/05/21/… )?
jehad
Sí, en Powershell se llama simplemente "perfil".
raíz

Respuestas:

23

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 $profilevariable. Puede crear ese archivo y su directorio contenedor con este comando:

New-Item $profile -Type File -Force

Crea un archivo llamado Microsoft.PowerShell_profile.ps1en una carpeta llamada WindowsPowerShelldebajo 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.

Ben N
fuente
3
¿Se Microsoft.PowerShell_profile.ps1puede cambiar ese nombre largo a solo profile.ps1? En el primer artículo aparece como$Home\[My ]Documents\WindowsPowerShell\Profile.ps1
nephewtom