Cómo crear alias permanentes de PowerShell

Resuelto AymenDaoudi asked hace 10 años • 12 respuestas

Quiero crear un aliasarchivo cmdletque 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 Gotoalias, 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, ¿existe una forma clara y directa de seguir teniendo un alias después de crearlo a través de diferentes sesiones

AymenDaoudi avatar Jul 23 '14 22:07 AymenDaoudi
Aceptado

ACTUALIZADO - enero de 2021

Es posible almacenar en un profile.ps1archivo cualquier código de PowerShell que se ejecutará cada vez que se inicie PowerShell. Existen al menos 6 rutas diferentes donde almacenar el código dependiendo de qué usuario tenga que ejecutarlo. Consideraremos sólo 2 de ellas: las rutas "todos los usuarios" y "solo su usuario" (siga el enlace anterior para obtener más opciones).

Para responder a tu pregunta solo debes crear un profile.ps1archivo que contenga el código que deseas que se ejecute, es decir:

New-Alias Goto Set-Location

y guárdelo en la ruta adecuada:

  • "$Home\Documents"(normalmente C:\Users\<yourname>\Documents): solo su usuario ejecutará el código. Esta es la ubicación recomendada. Puede encontrar rápidamente la ubicación de su perfil ejecutando echo $profilePowerShell.
  • $PsHome( C:\Windows\System32\WindowsPowerShell\v1.0): cada usuario ejecutará este código

IMPORTANTE : recuerde que debe reiniciar sus instancias de PowerShell para aplicar los cambios.

CONSEJOS

  • Si ambas rutas contienen un profile.ps1archivo, primero se ejecuta la de todos los usuarios y luego la específica del usuario. Esto significa que los comandos específicos del usuario sobrescribirán las variables en caso de duplicados o conflictos.

  • Coloque siempre el código en el perfil específico del usuario si no es necesario extender su ejecución a todos los usuarios. Esto es más seguro porque no contamina el espacio de otros usuarios (normalmente, no querrás hacerlo).
    Otra ventaja es que no necesita derechos de administrador para agregar el archivo a su espacio de usuario (lo hace para cualquier cosa en C:\Windows\System32).

  • Si realmente necesita ejecutar el código de perfil para cada usuario, tenga en cuenta que la $PsHomeruta es diferente para instancias de PowerShell de 32 y 64 bits. Debe considerar ambos entornos si desea ejecutar siempre el código del perfil.

    Los caminos son:

    • C:\Windows\System32\WindowsPowerShell\v1.0para el entorno de 64 bits
    • C:\Windows\SysWow64\WindowsPowerShell\v1.0para el de 32 bits (Sí, lo sé, el nombre de la carpeta es contradictorio, pero es correcto ).
Naigel avatar Jul 23 '2014 15:07 Naigel

No es una buena idea agregar este tipo de cosas directamente a sus $env:WINDIRcarpetas de PowerShell, a menos que realmente desee que su alias sea global.
La forma recomendada es agregarlo a tu perfil personal:

cd $env:USERPROFILE\Documents
md WindowsPowerShell -ErrorAction SilentlyContinue
cd WindowsPowerShell
New-Item Microsoft.PowerShell_profile.ps1 -ItemType "file" -ErrorAction SilentlyContinue
powershell_ise.exe .\Microsoft.PowerShell_profile.ps1

Ahora agregue su alias al archivo Microsoft.PowerShell_profile.ps1 que ahora está abierto:

function Do-ActualThing {
    # do actual thing
}

Set-Alias MyAlias Do-ActualThing

Luego guárdelo y actualice la sesión actual con:

. $profile

Nota: Por si acaso, si obtiene un problema de permiso como

CategoryInfo: SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId: Acceso no autorizado

Pruebe el siguiente comando y actualice la sesión nuevamente.

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Chase Florell avatar Apr 22 '2015 19:04 Chase Florell

Abra una ventana de Windows PowerShell y escriba:

notepad $profile

Luego cree una función, como por ejemplo:

function goSomewhereThenOpenGoogleThenDeleteSomething {
    cd C:\Users\
    Start-Process -FilePath "http://www.google.com"
    rm fileName.txt
}

Luego escriba esto debajo del nombre de la función:

Set-Alias google goSomewhereThenOpenGoogleThenDeleteSomething

¡Ahora puede escribir la palabra "google" en Windows PowerShell y hacer que ejecute el código dentro de su función!

Sterling Bourne avatar Jun 20 '2018 18:06 Sterling Bourne