備忘録的記事
仕事とプライベートで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\
参考