0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Windows PowerShell でショートカットのプロパティを書き換える

Posted at

備忘録的記事

仕事とプライベートでChromeのプロファイルを一発で切り替えたい……
が、情報を取得する記事はまあまああるが、ぱっと見で書き換えるという記事が見つからなかったので備忘録的に残しておくことにする

コード

filter ShortcutProperty($properties)
{
    $shell  = new-object -comobject WScript.Shell
    if($properties){
        $shortcut = $shell.CreateShortcut($_)
        $property_names = "Arguments","Description","HotKey","IconLocation","RelativePath","TargetPath","WindowStyle","WorkingDirectory"
        foreach($property_name in $property_names)
        {
            if ($shortcut.$property_name -ne $properties.$property_name)
            {
                Write-Output("Changed Properties`n{0,-16}: {1,-10}   >>   {2, -10}" -f $($property_name), $($shortcut.$property_name), $($properties.$property_name))
            }
            $shortcut.$property_name = $properties.$property_name
        }
        echo ""
        $shortcut.Save()
    }else{
        return $shell.CreateShortcut($_)
    }
}

使用法

# プロパティを取得
$f = dir -r -include "Google Chrome*.lnk" | ShortcutProperty

# プロパティを書き換える
$f.Arguments = '--profile-directory="Default"'

# 書き換えたプロパティを使ってショートカットを上書き
dir -r -include "Google Chrome*.lnk" | ShortcutProperty($f)

パイプでファイルを渡す

引数付きで実行した場合は書き換え、引数無しで実行した場合はプロパティ情報の出力になる

出力の時は以下のようなフォーマットになる

FullName         : path\to\folder\Google Chrome ベータ版.lnk
Arguments        : --profile-directory="Default"
Description      : インターネットにアクセス
Hotkey           : 
IconLocation     : path\to\icon\chrome.exe,9
RelativePath     : 
TargetPath       : path\to\target\chrome.exe
WindowStyle      : 1
WorkingDirectory : path\to\wd\

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?