PowerShell を使用してレジストリ エントリ値を検索および置換する

PowerShell を使用してレジストリ エントリ値を検索および置換する

レジストリ キーのセットを更新しようとしています。プロパティのセットは、古い値に基づいて新しい値で更新する必要があります。

以下を使ってみました:

 Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
      | set-itemproperty -Path { $_.PSPath } Uri -Value { $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" }

しかし、これにより uri プロパティの値は次のように設定されます。{ $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" }

私は試した:

 Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
      | set-itemproperty -Path { $_.PSPath } Uri -Value ${ $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" }

そして

 Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri 
      | set-itemproperty -Path { $_.PSPath } Uri -Value ( $_.Value -Replace ".mydomain.com/", ".mynewdomain.com/" )

しかし、それは価値を明らかにします。

できるだけ少ない行数で、複数のキーの複数のレジストリ値を更新したいと考えています。レジストリをエクスポートし、メモ帳を使用して検索と置換を行い、レジストリ エントリを再インポートすることですでに機能していますが、これは不正行為のように感じました。Powershell を使用してこれを実現する方法を本当に知りたいです。

私が試した他のこと:$(...)、、名前を付けたオプション(...)を省略します:S。-Value

$_.Valueを および に置き換えてみました$_.Uri$_、それでもうまくいきませんでした。

答え1

 Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri | %{set-itemproperty -Path $_.PSPath Uri -Value ( $_.Uri -Replace ".mydomain.com/", ".mynewdomain.com/" )}

関連情報