Я хотел бы начать с того, что я прочитал некоторые другие темы по этому вопросу, но на данный момент я все еще должен это сделать (решение принято выше моего уровня оплаты).
Мы находимся впроцесс перемещения и тестирования Azul Java, чтобы увидеть, насколько хорошо это работает для нас.Тем временем мне нужно выяснить, как создать сценарий удаления всей Java-версии Oracle (желательно, чтобы у меня был сценарий для JRE и другой для JDK).
В настоящее время я удаляю версии Java, используя списокиз всех версий jre, которые делают msiexec /x "GUID of the java version" /qn
, но это невероятно много времени, поэтому я хотел прагматично получить эти строки.
Сейчас я запускаю следующую команду:
Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like 'Java*'}
![enter image description here](https://i.stack.imgur.com/8cHcH.png)
Однако я пытаюсь выяснить, как автоматически получить IdentifyNumber для каждого результата, если Vendor = Oracle Corporation, и передать его команде msiexec для их проблемного удаления.Azul устанавливается в той же системе, в которой выполняется команда, но она не отображается (это хорошо, но на всякий случай я хотел получить квалификатор поставщика).
Мой вопрос: может ли кто-нибудь помочь мне передатьИдентификационный номер продукта в команду msiexec при условии, что Поставщиком является Oracle Corporation
Заранее благодарен.
Обновление 1: по отзывам Дрю и Ансгара
$Source = Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*
$Uninstall = $Source | Where-Object {($_.Publisher -like '*Oracle*')-and ($_.DisplayName -like 'Java*')} | select UninstallString
$UninstallString = $Uninstall.UninstallString
$UninstallSting | ForEach-Object{Invoke-Expression -ScriptBlock ($UninstallString)}
ОднакоКажется, я не могу правильно передать струны, так как продолжаю получать:
Invoke-Command : Cannot convert 'System.Object[]' to the type 'System.Management.Automation.ScriptBlock' required by parameter 'ScriptBlock'. Specified method
is not supported.
At C:\Konstantin\Java\UninstallAllJava.ps1:8 char:62
+ ... ting | ForEach-Object{Invoke-Command -ScriptBlock ($UninstallString)}
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Invoke-Command], ParameterBindingException
+ FullyQualifiedErrorId : CannotConvertArgument,Microsoft.PowerShell.Commands.InvokeCommandCommand