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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top