我正在嘗試更新一組註冊表項,需要根據舊值使用新值更新一組屬性。
我嘗試使用以下內容:
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 來實現這一目標。
我嘗試過的其他事情:$(...)
,,(...)
省略-Value
您命名的選項:S。
我嘗試用 和 替換$_.Value
,$_.Uri
也$_
不起作用。
答案1
Get-ItemProperty -Path HKCU:\Software\xxxxx\*.mydomain.com Uri | %{set-itemproperty -Path $_.PSPath Uri -Value ( $_.Uri -Replace ".mydomain.com/", ".mynewdomain.com/" )}