Home > Windows にまつわる e.t.c.

PowerShell でスタートメニューにプログラムをピン止めする


Windows 10 / Windows Server 2016 では、よく使うプログラムをスタートメニューにピン止めする事が出来ます。

僕は時々 PC 環境を再構築するので、その時に GUI でちまちまスタートメニュー登録するより、ショートカットを PowerShell で登録した方が手っ取り早いので、スクリプト化しました。

まずは、どうやるかの手順紹介です。

.exe か ショートカット を登録するのですが、.exe の場合は表示名を持っていないことがあるので、ショートカットの登録がお勧めです。

ショートカットがどこにあるのかを調べるのには、スタートメニューで目的のプログラムを右クリックし、[その他]-[ファイルの場所を開く]で確認することができます。

 

大方のショートカットは「C:\ProgramData\Microsoft\Windows\Start Menu」にあります。

ここ以外の場所にあるショートカットも登録できます。

まずはショートカットのフルパスを取得します。フルパス取得は目的のファイルを右クリックして「パスのコピー」で出来ます。

 

Google Chrome はこのようになっていました。

"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Google Chrome.lnk"

 

これをパスとファイル名に分解して以下のように PowerShell で登録します

$Shell = new-object -com "Shell.Application"
$TergetFolder = $Shell.Namespace( "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\" )
$TergetItem = $TergetFolder.ParseName( "Google Chrome.lnk" )
$Verb = $TergetItem.Verbs() | ? Name -match "^スタートにピン留めする"
$Verb.DoIt()

すると、Chrome がスタートメニューピン止めできました。

 

関数にするとこんな感じですね(en-us な環境にも対応)

#########################################################
# ショートカットをスタートメニューにピン止めする
#########################################################
function Pin2Start($FileFullPath){
    if( Test-Path $FileFullPath ){
        $PathName = Split-Path $FileFullPath -Parent
        $FileNmae = Split-Path $FileFullPath -Leaf

        $Shell = new-object -com "Shell.Application"
        $TergetFolder = $Shell.Namespace( $PathName )
        $TergetItem = $TergetFolder.ParseName( $FileNmae )
        $Verb = $TergetItem.Verbs() | ? {($_.Name -match "^スタートにピン留めする") -or ($_.Name -match "^&Pin to Start")}
        $Verb.DoIt()
    }
}

 

関連情報

PowerShell でクイックアクセスにフォルダーをピン止めする
http://www.vwnet.jp/Windows/w10/2017020201/Pin2QuickAccess.htm

関数を PowerShell プロンプトで実行する
http://www.vwnet.jp/Windows/PowerShell/2016100401/UseFunctionInPsPrompt.htm

 

 

back.gif (1980 バイト)

home.gif (1907 バイト)

Copyright © MURA All rights reserved.