Domanda

Esempio:Hai una scorciatoia s A SomeProgram nella directory corrente.

In cmd.exe, puoi digitare s e avvierà il programma.

In 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 digiti s.lnk O SomeProgram, esegue il programma perfettamente.

Come posso configurare PowerShell per eseguire scorciatoie proprio come i programmi?

È stato utile?

Soluzione

Sul mio sistema Vista digitando S non verrà avviato un file lnk a meno che non sia impostata la variabile di ambiente PATHEXT con .lnk nell'elenco.Quando io faccio.S funzionerà in cmd.exe e devo fare .\S in PowerShell.

Altri suggerimenti

È inoltre possibile richiamare un collegamento utilizzando il cmdlet "invoke-item".Quindi, ad esempio, se desideri avviare "internet explorer.lnk" puoi digitare il seguente comando:

invoke-item 'Internet Explorer.lnk'

Oppure potresti anche usare l'alias

ii 'internet explorer.lnk'

Un'altra cosa interessante è che potresti fare "invoke-item t.txt" e si aprirebbe automaticamente qualunque fosse il gestore predefinito per i file *.txt, come il blocco note.

Nota Se si vuole eseguire un'applicazione, app.exe, nella directory corrente è necessario specificare effettivamente il percorso, relativo o assoluto, da eseguire.".\app.exe" è ciò che dovresti digitare per eseguire l'applicazione.

Dopo aver aggiunto ;.LNK fino alla fine del mio PATHEXT variabile d'ambiente, ora posso eseguire scorciatoie anche senza la precedente ./ notazione.(Grazie Bruceatk!)

Sono stato anche ispirato dal suggerimento di Steven di creare un piccolo script che dia automaticamente degli alias a tutte le scorciatoie del mio file PATH (anche se ho intenzione di restare con la soluzione più semplice;).

$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 }

Non credo che tu possa.Potrebbe essere meglio creare alias i comandi di uso comune in uno script che chiami dallo script del tuo profilo.

Esempio -

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

Quindi hai il tuo nome breve e facilmente digitabile disponibile dalla riga di comando.

Per prima cosa, la scorciatoia non è "s", è "s.lnk".Per esempio.non puoi aprire un file di testo (ad esempio con il blocco note) digitando "t" quando il nome è "t.txt" :) Technet dice

La variabile di ambiente PathExt definisce l'elenco delle estensioni dei file controllate da Windows NT quando si cerca un file eseguibile.Il valore predefinito di PATHEXT è .COM;.EXE;.BAT;.CMD

Puoi fare il punto come descritto da altri qui, oppure puoi anche usare il carattere di invocazione "&".Ciò significa che PS tratta la tua stringa come qualcosa da eseguire piuttosto che come semplice testo.Questo potrebbe essere più importante in uno script però.

Aggiungerei che dovresti passare qualsiasi parametro FUORI dalle virgolette (questo mi ha morso prima) nota che "-r" non è nella stringa tra virgolette, solo nell'exe.

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

Puoi sempre utilizzare il completamento con tabulazione per digitare "s[TAB]" e premere INVIO e questo lo eseguirà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top