質問
例:ショートカットがあります s
に SomeProgram
現在のディレクトリにあります。
で cmd.exe
, 、入力できます s
そしてプログラムが起動します。
PowerShell で次のように入力します。 s
与える:
The term 's' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.
入力すると s.lnk
または SomeProgram
, 、プログラムは問題なく実行されます。
プログラムと同じようにショートカットを実行するように PowerShell を構成するにはどうすればよいですか?
解決
私の Vista システムでは、リスト内で環境変数 PATHEXT に .lnk が設定されていない限り、S を入力しても lnk ファイルは起動しません。私がする時。S は cmd.exe で機能しますが、powershell で .\S を実行する必要があります。
他のヒント
「invoke-item」コマンドレットを使用してショートカットを呼び出すこともできます。たとえば、「internet explorer.lnk」を起動したい場合は、次のコマンドを入力できます。
invoke-item 'Internet Explorer.lnk'
または、エイリアスを使用することもできます
ii 'internet explorer.lnk'
もう 1 つの優れた点は、「invoke-item t.txt」を実行すると、*.txt ファイルのデフォルトのハンドラー (メモ帳など) が自動的に開かれることです。
注記 現在のディレクトリでアプリケーション app.exe を実行したい場合は、実際に実行するパスを相対パスまたは絶対パスで指定する必要があります。「.\app.exe」は、アプリケーションを実行するために入力する必要があるものです。
追加後 ;.LNK
私の終わりまで PATHEXT
環境変数を追加すると、前述の環境変数がなくてもショートカットを実行できるようになりました。 ./
表記。(ありがとう、bruceatk!)
また、スティーブンの提案に触発されて、すべてのショートカットに自動的にエイリアスを付ける小さなスクリプトを作成しました。 PATH
(私はより単純な解決策に固執するつもりですが;)。
$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 }
できるとは思えません。プロファイル スクリプトから呼び出すスクリプト内で、よく使用されるコマンドのエイリアスを作成した方がよい場合があります。
例 -
Set-Alias np c:\windows otepad.exe
これで、コマンド ラインから簡単に入力できる短い名前が得られます。
まず、ショートカットは「s」ではなく「s.lnk」です。例えば。名前が「t.txt」の場合、「t」を入力してテキストファイル(たとえばメモ帳)を開くことはできません:) テックネットは言う
PATHEXT 環境変数 ファイル拡張子のリストを定義します 検索時に Windows NT でチェックされる 実行可能ファイルの場合。PATHEXT のデフォルト値は .COM;.EXE;.BAT;.CMD です。
ここで他の人が説明したようにドット ソースを使用することも、呼び出し文字「&」を使用することもできます。これは、PS が文字列を単なるテキストではなく実行対象として扱うことを意味します。ただし、スクリプトではこれがより重要になる可能性があります。
パラメータは引用符の外側に渡す必要があることを付け加えておきます(これは以前にちょっとしたことです)。「-r」は引用符で囲まれた文字列にはなく、exe にのみ含まれることに注意してください。
& "C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe" -r | out-null
いつでもタブ補完を使用して「s[TAB]」と入力し、ENTER キーを押すと実行されます。