PowerShell からショートカットファイルのリンク先を実行する方法を紹介します。
まず、ショートカットはWsh(Windows Script Host) の力を借りてフィルター関数を作成します。フィルターを作っておくと、パイプとしても使えるのでPowerShellとの親和性が高くなり便利です。
filter Get-Shortcut() { $shl = new-object -comobject WScript.Shell return $shl.CreateShortcut($_) }
下準備はこれで完了
あとはStart-Process と絡めてコールするだけです。Get-Shortcut が標準コマンドのように溶け込んでいるのが分かります。
# 1プロセスならこれでもいいです Start-Process ('c:\temp\test.lnk' | Get-Shortcut).TargetPath # 複数のプロセス起動ならリストで。こっちのがPowerShellらしいです。 $list = @('a.lnk', 'b.lnk', 'c.lnk') $list | Get-Shortcut | % { Start-Process $_.TargetPath }
Get-Shortcutの出力を表示させるとどんなメンバーがあるかが分かります。
ノートパッドへのリンク (a.lnk) で試してみると…
PS C:\temp> 'c:\temp\a.lnk' | Get-Shortcut FullName : c:\temp\a.lnk Arguments : Description : Hotkey : IconLocation : ,0 RelativePath : TargetPath : C:\Windows\System32\notepad.exe WindowStyle : 1 WorkingDirectory : C:\Windows\System32
簡単にメンバーの一覧やその値を確かめられるのが PowerShell のいいところです。なにか分からなければ表示させて確認してみるといいですよ。