Powershell для прокрутки каждого профиля пользователя, чтобы получить номер версии программного обеспечения, а затем создать строку удаления и запустить команду
Надеюсь, что кто-то может дать мне представление о том, как продолжить работу с оставшимся сценарием. Сценарий должен получить номер версии установленного Chrome из этой сборки. Создайте строку для удаления, как показано ниже.
Я застрял на второй части, нормально получить номер версии.
- Какая логика будет следующей, чтобы затем перебрать каждый профиль пользователя для запуска setup.exe из C: \ Users [имя пользователя] \ appdata \ Local \ Google \ Chrome \ Application \ 90.0.4430.72 \ Installer. Я получаю ошибку: нераспознанный командлет на {& $unin}
Спасибо
#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}
}
}
1 ответ
Цитата из документов :
Оператор вызова не анализирует строки. Это означает, что вы не можете использовать параметры команды в строке при использовании оператора вызова.
Передайте аргументы отдельно:
$uninArgs = "--uninstall", "--Channel", "--chrome", "--force-uninstall"
$uninExe = "$UserProfile\Google\Chrome\Application\$VersionInstalled\Installer\setup.exe"
if ($VersionInstalled) {
& $uninExe $uninArgs
}