2008-08-22 12 views
12

Ejemplo: Tiene un atajo s a SomeProgram en el directorio actual.Ejecutar atajos como programas

En cmd.exe, puede escribir s y se iniciará el programa.

En PowerShell, escribiendo s da:

The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

Si escribe s.lnk o SomeProgram, se ejecuta el programa muy bien.

¿Cómo puedo configurar PowerShell para ejecutar accesos directos al igual que los programas?

Respuesta

7

En mi sistema de Vista, escribir S no abrirá un archivo lnk a menos que tenga la variable de entorno PATHEXT establecida con .lnk en la lista. Cuando lo hago. S funcionará en cmd.exe y tengo que hacer. \ S en PowerShell.

+1

cmd agrega automáticamente el directorio actual "." a su variable de entorno PATH. PowerShell considera que se trata de un riesgo de seguridad y obliga a escribir. \ Path explícitamente. Como en Linux, puede agregar "." a su variable de entorno PATH para restablecer el comportamiento "peligroso" ... – Jaykul

+0

Creo que también debe escribir el nombre completo del archivo, como se dijo slipsec – Jaykul

+0

Jaykul/slipsec, la respuesta que le di es que puede agregar .vuelva a la variable de entorno PATHEXT y luego puede iniciar un acceso directo desde la línea de comando sin agregar .lnk. – bruceatk

2

No creo que puedas. Tal vez sea mejor que alise los comandos comúnmente utilizados en un script al que llame desde su script de perfil.

Ejemplo -

Set-Alias ​​np c: \ windows \ notepad.exe

entonces usted tiene su nombre corto, fácil tipificable disponibles desde la línea de comandos.

0

Siempre puede usar la terminación de pestañas para escribir "s [TAB]" y presionar ENTER y eso lo ejecutará.

2

Para empezar, el acceso directo no es "s", es "s.lnk". P.ej. usted no es capaz de abrir un archivo de texto (decir con el bloc de notas) escribiendo "t" cuando el nombre es "t.txt" :) Technet says

El PATHEXT variable de entorno define la lista de extensiones de archivo comprobado por Windows NT al buscar para un archivo ejecutable. El valor por defecto de PATHEXT es .COM, .EXE, .BAT; .CMD

Puede punto-fuente según lo descrito por otros aquí, o también se puede utilizar el carácter de invocación "&". Esto significa que PS trata su cadena como algo para ejecutar en lugar de solo texto. Sin embargo, esto podría ser más importante en un script.

Yo agregaría que debe pasar cualquier parámetro FUERA de las comillas (este me mordió antes) tenga en cuenta que la "-r" no está en la cadena entre comillas, solo el exe.

& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null 
5

Después de añadir ;.LNK hasta el final de mi variable de entorno PATHEXT, ahora puedo ejecutar accesos directos, incluso sin la ./ notación anterior. (Gracias bruceatk!)

También me inspiré en la sugerencia de Steven de crear un pequeño script que automáticamente alía todos los accesos directos en mi PATH (aunque planeo seguir con la solución más simple;).

$env:path.Split(';') | 
    Get-ChildItem -filter *.lnk | 
    select @{ Name='Path'; Expression={ $_.FullName } }, 
     @{ Name='Name'; Expression={ [IO.Path]::GetFileNameWithoutExtension($_.Name) } } | 
    where { -not (Get-Alias $_.Name -ea 0) } | 
    foreach { Set-Alias $_.Name $_.Path } 
13

También puede invocar un acceso directo mediante el cmdlet "invocar a-punto". Así, por ejemplo, si desea poner en marcha "explorer.lnk Internet" y escribe el siguiente comando:

invoke-item 'Internet Explorer.lnk' 

O también se podría utilizar el alias

ii 'internet explorer.lnk' 

Otra cosa interesante es que se puede hacer "invocar-elemento t.txt" y se abrirá automáticamente cualquiera que sea el controlador predeterminado para los archivos * .txt, como el bloc de notas.

Nota Si desea ejecutar una aplicación, app.exe, en el directorio actual, debe especificar la ruta, relativa o absoluta, para ejecutar. ". \ app.exe" es lo que necesitaría escribir para ejecutar la aplicación.

+1

También prueba "ii". alguna vez;) – halr9000

+0

Intenté con la sesión de Remote Power Shell. El problema es que no ejecuta la interfaz de usuario. Por el momento, intento lanzar Visual Studio. Puedo ver su proceso pero aún no se muestra UI cuando me conecto a la computadora usando RDP. ¿Alguna idea? – Royi

Cuestiones relacionadas