Quiero crear una alias
de una cmdlet
que no caduque después de cerrar la sesión actual de Powershell, digamos que tengo este alias:
C:\Users\Aymen> New-Alias Goto Set-Location
Esto crea perfectamente el Goto
alias, pero quiero usarlo incluso después de cerrar la sesión actual, ¿cómo puedo lograrlo?
Nota:
El sistema de ayuda de PowerShell sugiere que puedo exportar los alias que creo e importarlos la próxima vez que abra una nueva sesión, en realidad eso no es lo que estoy buscando, ¿hay una forma clara y directa de seguir teniendo un alias después de crearlo a través de diferentes sesiones
powershell
AymenDaoudi
fuente
fuente
Respuestas:
ACTUALIZADO - Enero 2017
Es posible almacenar en un
profile.ps1
archivo cualquier código de PowerShell que se ejecutará cada vez que se inicie PowerShell. Hay al menos 6 rutas diferentes donde almacenar el código dependiendo de qué usuario tenga que ejecutarlo. Solo podemos considerar 2 de ellos: las rutas "todos los usuarios" y "solo su usuario".Entonces, para responder a su pregunta, solo tiene que crear un
profile.ps1
archivo que contenga el código que desea ejecutar, es deciry guárdelo en la ruta correcta:
"$Home\Documents"
(C: \ Users \ yourname \ Documents): solo su usuario ejecutará el código.$PsHome
(C: \ Windows \ System32 \ WindowsPowerShell \ v1.0): cada usuario ejecutará el código.Para aplicar los cambios, cierre todas las instancias de PowerShell abiertas y reinícielas.
CONSEJOS
Si ambas rutas contienen un
profile.ps1
archivo, primero se ejecuta el usuario completo, luego los usuarios específicos.Siempre coloque el código en el perfil específico del usuario si no es necesario extender su ejecución a cada usuario. No necesita derechos de administrador para agregar el archivo a su espacio de usuario (de lo contrario, sí lo hace) y no contamina el espacio de otros usuarios.
¡RECUERDA! La
$PsHome
ruta es diferente entre instancias de 32 bits y 64 bits de powershell, por lo que debe tener en cuenta ambos entornos si desea ejecutar siempre el código de perfil. Por lo general, las rutas sonC:\Windows\System32\WindowsPowerShell\v1.0
para el entorno de 64 bits yC:\Windows\SysWow64\WindowsPowerShell\v1.0
para el de 32 bits.fuente
\Users\{ME}\Documents\WindowsPowerShell
y luego agregar queMicrosoft.PowerShell_profile.ps1
ninguna de las otras rutas funciona para mí."$HOME\Documents\WindowsPowerShell"
y la asignación de nombresMicrosoft.PowerShell_profile.ps1
restringen el alcance a los que no son ISE y al host actual, pero no deberían ser una cuestión de permisos (lo mismo"$Home\Documents\profile.ps1" should apply
). Tal vez no sea realmente así, lo intentaré, gracias por la informaciónNew-Item -path $profile -type file -force
que creó la carpeta y el archivoDocuments\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
No es una buena idea agregar este tipo de cosas directamente a sus
$env:WINDIR
carpetas de PowerShell.La forma recomendada es agregarlo a su perfil personal:
Ahora agregue su alias al archivo Microsoft.PowerShell_profile.ps1 que ahora está abierto:
Luego guárdelo y actualice la sesión actual con:
Nota: Por si acaso, si obtiene un problema de permiso como
Pruebe el siguiente comando y actualice la sesión nuevamente.
fuente
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
. La-Scope
opción lo hace un poco más seguro.MyAlias
. Además, para transmitir argumentos, use@Args
, por ejemplofunction gs { git status @Args }
Set-Alias
porque me gusta nombrar mis métodos usando las convenciones de PS apropiadas con los verbos apropiados. Pero sí, si no eres exigente, puedes nombrar tu método como quieras invocar.2018, Windows 10
Puede vincular a cualquier archivo o directorio con la ayuda de un simple script de PowerShell.
Escribir un script de acceso directo a un archivo
Abra Windows PowerShell ISE. En el panel de script, escriba:
Luego dirígete al panel de línea de comandos. Encuentre su dirección de perfil de usuario de PowerShell con
echo $profile
. Guarde el script en esta dirección.El script en la dirección de perfil de PowerShell se ejecutará cada vez que abra powershell. El acceso directo debería funcionar con cada nueva ventana de PowerShell.
Escribir una secuencia de comandos de acceso directo de directorio
Requiere otra línea en nuestro script.
El resto es exactamente igual.
Habilitar scripts de PowerShell
Por defecto, los scripts de PowerShell están bloqueados. Para habilitarlos, abra la configuración -> Actualización y seguridad -> Para desarrolladores. Seleccione el modo de desarrollador (puede requerir reiniciar). .
Desplácese hacia abajo hasta la sección PowerShell, marque la opción "Cambiar política de ejecución ..." y aplique.
fuente
echo $profile
es un consejo increíble para ayudar a encontrar la ubicación correcta para agregar el archivo. Gracias por la respuesta integralSencillo. Por ejemplo...
Abra una ventana de Windows PowerShell y escriba:
Luego cree una función, como:
Luego escriba esto debajo del nombre de la función:
¡Ahora puede escribir la palabra "google" en Windows PowerShell y hacer que ejecute el código dentro de su función!
fuente
Solo para agregar a esta lista de posibles ubicaciones ...
Esto no funcionó para mí:
\Users\{ME}\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Sin embargo esto hizo:
\Users\{ME}\OneDrive\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
Si no tiene un perfil o está buscando configurar uno, ejecute el siguiente comando, creará la carpeta / archivos necesarios e incluso le dirá dónde vive.
New-Item -path $profile -type file -force
fuente
Para crear el archivo profile1.psl, escriba el siguiente comando:
new-item $ PROFILE.CurrentUserAllHosts -ItemType file -Force
para acceder al archivo, escriba el siguiente comando:
ise $ PROFILE.CurrentUserAllHosts
tenga en cuenta que si no lo ha hecho antes, verá que no podrá ejecutar el script debido a su política de ejecución, que debe cambiar a Sin restricciones de Restringido (predeterminado).
para hacerlo, cierre el script y luego escriba este comando:
Set-ExecutionPolicy -Scope CurrentUser
luego:
Remoto Firmado
entonces este comando nuevamente:
ise $ PROFILE.CurrentUserAllHosts
luego, finalmente escriba sus alias en el script, guárdelo, y deberían ejecutarse cada vez que ejecute powershell, incluso después de reiniciar su computadora.
fuente
Set-ExecutionPolicy RemoteSigned
. No vayas recomendandoUnrestricted
. Fuente: itprotoday.com/management-mobility/…Esto es un poco sofisticado ... pero funciona:
Paso 1: crear un perfil de Powershell:
Paso 2: luego en herramientas ~ / Documentos / herramientas / perfil.ps1:
Paso 3:
$ Set-ExecutionPolicy -Scope CurrentUser Unrestricted $. ./install_profile.ps1
fuente