usar tutorial script como commands comandos powershell

script - powershell tutorial



Ejecutar atajos como programas (6)

Ejemplo: Tiene un atajo a SomeProgram en el directorio actual.

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

En PowerShell, tipear 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 , ejecuta el programa muy bien.

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


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

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


Para empezar, el atajo no es "s", es "s.lnk". Por ejemplo, no puede abrir un archivo de texto (digamos con un 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 marcadas por Windows NT cuando busca un archivo ejecutable. El valor predeterminado de PATHEXT es .COM; .EXE; .BAT; .CMD

Puede dot-source como otros lo describen 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 script.

Añadiría que debe pasar cualquier parámetro FUERA de las comillas (este me mordió antes) tenga en cuenta que el "-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 puede usar la terminación de pestañas para escribir "s [TAB]" y presionar ENTER y eso lo ejecutará.


En mi sistema Vista, tipear S no abrirá 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 hacer. / S en PowerShell.


Después de agregar ;.LNK al 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 guión que alía automáticamente 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 }


También puede invocar un atajo utilizando el cmdlet "invocar-elemento". Entonces, por ejemplo, si desea iniciar "internet explorer.lnk" puede escribir el siguiente comando:

invoke-item ''Internet Explorer.lnk''

O también puedes usar el alias

ii ''internet explorer.lnk''

Otra cosa interesante es que podría hacer "invocar-elemento t.txt" y se abriría 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.