Pergunta
Exemplo:Você tem um atalho s
para SomeProgram
no diretório atual.
Em cmd.exe
, Você pode digitar s
e iniciará o programa.
No PowerShell, digitando s
dá:
The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
Se você digitar s.lnk
ou SomeProgram
, ele executa o programa perfeitamente.
Como posso configurar o PowerShell para executar atalhos como programas?
Solução
No meu sistema Vista, digitar S não iniciará um arquivo lnk, a menos que eu tenha a variável de ambiente PATHEXT definida com .lnk na lista.Quando eu faço.S funcionará em cmd.exe e eu tenho que fazer .\S no PowerShell.
Outras dicas
Você também pode invocar um atalho usando o cmdlet "invoke-item".Então, por exemplo, se você quiser iniciar o "internet explorer.lnk", você pode digitar o seguinte comando:
invoke-item 'Internet Explorer.lnk'
Ou você também pode usar o alias
ii 'internet explorer.lnk'
Outra coisa legal é que você poderia fazer "invoke-item t.txt" e ele abriria automaticamente qualquer que fosse o manipulador padrão para arquivos *.txt, como o bloco de notas.
Observação Se você deseja executar um aplicativo, app.exe, no diretório atual, você deve especificar o caminho, relativo ou absoluto, para executar.".\app.exe" é o que você precisa digitar para executar o aplicativo.
Depois de adicionar ;.LNK
até o fim do meu PATHEXT
variável de ambiente, agora posso executar atalhos mesmo sem o anterior ./
notação.(Obrigado, Bruceatk!)
Também me inspirei na sugestão de Steven de criar um pequeno script que cria automaticamente um alias para todos os atalhos do meu PATH
(mesmo que eu pretenda ficar com a solução mais simples;).
$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 }
Eu não acredito que você possa.Talvez seja melhor criar alias para comandos comumente usados em um script que você chama a partir do script de perfil.
Exemplo -
Set-Alias np c:\windows otepad.exe
Então você terá seu nome curto e facilmente digitável disponível na linha de comando.
Por um lado, o atalho não é "s", é "s.lnk".Por exemplo.você não consegue abrir um arquivo de texto (digamos, com o bloco de notas) digitando "t" quando o nome é "t.txt" :) Technet diz
A variável de ambiente Pathext define a lista de extensões de arquivo verificadas pelo Windows NT ao pesquisar um arquivo executável.O valor padrão de PATHEXT é .COM;.EXE;.BAT;.CMD
Você pode usar a fonte de ponto conforme descrito por outros aqui ou também usar o caractere de invocação "&".Isso significa que o PS trata sua string como algo a ser executado, e não apenas como texto.Isso pode ser mais importante em um script.
Eu acrescentaria que você deve passar quaisquer parâmetros FORA das aspas (este me mordeu antes), observe que o "-r" não está na string citada, apenas o exe.
& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null
Você sempre pode usar o preenchimento de tabulação para digitar "s[TAB]" e pressionar ENTER para executá-lo.