Search code examples
powershellgoogle-chromeuninstallstring

Powershell to Loop through each user profile to get Version number of software and then create uninstall string and run the command


Hoping someone can give me an idea on how to proceed with the remaining script. The script is to get Version number of Installed Chrome from that build Build a string for the uninstall as shown below.

I'm stuck on the second part, fine on getting the version number.

  1. What would the logic be next to then iterate through each user profile to run the setup.exe from C:\Users[username]\appdata\Local\Google\Chrome\Application\90.0.4430.72\Installer. The error I am getting is unrecognized cmdlet on the { & $unin}

Thank you

#UserHives - Find all the user profiles in the registry
$UserHives = Get-ChildItem Registry::HKEY_USERS\ |Where-Object {$_.Name -match '^HKEY_USERS\\S-1-5-21-[\d\-]+$'}
$UserProfile = $Env:USERPROFILE

#
foreach($user in $UserHives)


{
    #1.Get Version Of chrome
     
     #1. PATH TO SEARCH FOR
     $Path = Join-Path $user.PSPath "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome"

            If (Test-Path $Path){
                 $GetVersion = Get-ItemProperty -Path $Path | Select-Object -Property Version
                 $VersionInstalled = $GetVersion.Version

                 

                 #create uninstallstring
                 $UninString = "\Google\Chrome\Application\$VersionInstalled\Installer\setup.exe --uninstall --Channel --chrome --force-uninstall"
                 $unin = $UserProfile + "" + $UninString

                 If($VersionInstalled){ & $unin}
                 
                 }
            
        }

Solution

  • Quote from the docs:

    The call operator does not parse strings. This means that you cannot use command parameters within a string when you use the call operator.

    Pass the arguments separately:

    $uninArgs = "--uninstall", "--Channel", "--chrome", "--force-uninstall"
    $uninExe = "$UserProfile\Google\Chrome\Application\$VersionInstalled\Installer\setup.exe"
    if ($VersionInstalled) {
        & $uninExe $uninArgs
    }