PMPの流儀

我が家の流儀

我が家で気になったことを夫婦で取り上げていきます

MENU

PowerShell ショートカットファイルを実行する

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 のいいところです。なにか分からなければ表示させて確認してみるといいですよ。