Я написал сценарий PowerShell для проверки версии Java, и если он там не будет, он будет запускать установщик для него, но по какой-то причине, хотя он обнаруживает указанную версию Java, но он все еще запускает установщик.Автоматизация установки Java через Powershell
$java = Get-WmiObject -Class win32_product |
where {$_.Name -like "*Java 7 Update 80*"}
If ($java -eq 'Java 7 Update 80') {
"your java version is acceptable"
Exit
} ElseIf ($java -ne 'Java 7 Update 80') {
Start-Process -filepat C:\jre1.7.0_80.msi /passive
"You don't have the right version of Java, installing Java 7 Update 80"
}
Write-Host "End"
вы напечатали значение '$ java', чтобы проверить это? – Random
FYI: не используйте для этого класс win32_product, если только вы не хотите создавать новые проблемы. Win32_product нарушен: когда вы запрашиваете этот класс, он заставляет восстанавливать все зарегистрированные msi, которые могут вызвать новые проблемы с приложениями, внезапно теряя свои настройки. Это также является причиной того, что этот класс работает так медленно (и он спамает журнал событий приложения). Циклирование через значения реестра для удаления является гораздо более быстрым и безопасным. Я также заметил опечатку в переключателе -filepath командлета start-process – bluuf