Hi,
I am trying finding all value v1 by v2 in the registry.
1. Running
$x=Get-ChildItem Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | foreach { Get-ItemProperty $_.PSPath } | Sort-Object Pschildname | Where-object pschildname -like "!test_ANv1*"
2. And I get
DisplayName : !test_ANv1 DisplayVersion : 2005 (v1) InstallDate : 2015-03-17 Language : Fr Publisher : xxx UninstallString : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy bypass -noexit -file "C:\Program Files\xxx\test_ANv1\test_ANv1_DesInstMan.ps1" UninstallPath : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -executionPolicy bypass -noexit -file "C:\Program Files\xxx\test_ANv1\test_ANv1_DesInstMan.ps1" PSPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\test_ANv1 PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall PSChildName : !test_ANv1 PSProvider : Microsoft.PowerShell.Core\Registry
Not I need to replace all v1 by v2. Not the whole string just the v1 to v2 part.
3. I did try
$newValue = $x -replace "v1", "v2"
The replacement has worked. But I lost the format.
@{DisplayName=!test_ANv2; DisplayVersion=2005 (v2); InstallDate=2015-03-17; Language=Fr; Publisher=xxx; UninstallString=C:\Windows\System 32\WindowsPowerShell\v2.0\powershell.exe -executionPolicy bypass -noexit -file "C:\Program Files\xxx\test_ANv2\test_ANv2 _DesInstMan.ps1"; UninstallPath=C:\Windows\System32\WindowsPowerShell\v2.0\powershell.exe -executionPolicy bypass -noexit -file "C:\Program Files\xxx \test_ANv2\test_ANv2_DesInstMan.ps1"; NoModify=1; NoRepair=0; NoRemove=0; InstalledConf=CARRA; PSPath=Microsoft.Po werShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\!test_ANv2; PSParentPath=Microsoft.PowerShell.Core \Registry::HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall; PSChildName=!test_ANv2; PSProvider=Microsoft.PowerShell.Core\R egistry}
How may I overwrite the actuals registry key by using those values?