potisanのプログラミングメモ

趣味のプログラマーがプログラミング関係で気になったことや調べたことをいつでも忘れられるようにメモするブログです。はてなブログ無料版なので記事の上の方はたぶん広告です。記事中にも広告挿入されるみたいです。

PowerShell7 URL Protocol値の設定されたProgIDを列挙する

URL Protocol値の設定されたProgIDを列挙するコードです。Get-ItemPropertyコマンドレットは-Nameに配列を与えれば複数の値の有無でキー名を取得できることが分かります。

# 呼び出し側のスコープにHKCRを登録します。
function Register-HKCR
{
  [OutputType([void])]
  param()
  Remove-PSDrive -Name HKCR -ErrorAction SilentlyContinue
  [void](New-PSDrive -PSProvider Registry -Root HKEY_CLASSES_ROOT -Name HKCR -Scope 1)
}

#
# HKCRキーのサブキーからURL Protocol値を持つProgID候補を取得します。
#
#戻り値:
# KeyName、Description、URL Protocolキーを持つPSCustomObject配列。URL Protocolの値は常に空の文字列です。
#
function Get-URLProtocolProgID
{
  [OutputType([PSCustomObject[]])]
  Param ()

  Get-ItemProperty -Path HKCR:* -Name ('(default)','URL Protocol') -ErrorAction SilentlyContinue
    | Where-Object PSChildName -NotLike .* # 拡張子の除外
    | Where-Object 'URL Protocol' -NE $Null
    | ForEach-Object {[PSCustomObject]@{KeyName=$_.PSChildName; Description=$_.'(default)'; 'URL Protocol'=$_.'URL Protocol'}}
}

Register-HKCR
Get-URLProtocolProgID