Pregunta

Ejemplo:Tienes un atajo s a SomeProgram en el directorio actual.

En cmd.exe, puedes escribir s y lanzará 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 escribes s.lnk o SomeProgram, ejecuta el programa muy bien.

¿Cómo puedo configurar PowerShell para ejecutar accesos directos como programas?

¿Fue útil?

Solución

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

Otros consejos

También puede invocar un acceso directo mediante el cmdlet "invoke-item".Entonces, por ejemplo, si desea iniciar "internet explorer.lnk", puede escribir el siguiente comando:

invoke-item 'Internet Explorer.lnk'

O también podrías usar el alias

ii 'internet explorer.lnk'

Otra cosa interesante es que podrías hacer "invoke-item t.txt" y automáticamente abriría cualquier controlador predeterminado para 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 deberá escribir para ejecutar la aplicación.

Después de agregar ;.LNK hasta el final de mi PATHEXT variable de entorno, ahora puedo ejecutar atajos incluso sin el anterior ./ notación.(¡Gracias bruceatk!)

También me inspiré en la sugerencia de Steven de crear un pequeño script que automáticamente crea alias en todos los accesos directos de 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 }

No creo que puedas.Es posible que sea mejor asignar un alias a los comandos de uso común en una secuencia de comandos que llame desde la secuencia de comandos de su perfil.

Ejemplo -

Conjunto-Alias ​​np c:\windows otepad.exe

Luego tendrá su nombre corto y fácil de escribir disponible desde la línea de comando.

Por un lado, el atajo no es "s", sino "s.lnk".P.ej.no puedes abrir un archivo de texto (digamos con el bloc de notas) escribiendo "t" cuando el nombre es "t.txt" :) Technet dice

La variable de entorno Pathext define la lista de extensiones de archivos verificadas por Windows NT al buscar un archivo ejecutable.El valor predeterminado de PATHEXT es .COM;.EXE;.BAT;.CMD

Puede obtener puntos como lo describen otros aquí, o también puede usar 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 guión.

Agregaría que debes pasar cualquier parámetro FUERA de las comillas (este me molestó antes) ten en cuenta que "-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

Siempre puedes usar la función de tabulación para escribir "s[TAB]" y presionar ENTER y eso lo ejecutará.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top