Довольно простой способ, который я могу придумать, чтобы получить только путь установки, состоит в том, чтобы выполнить разбиение на основе специального символа, используемого для инициации аргументов, в данном случае, '-', с последующим выбором первой записи врезультирующий массив.
Например, если вы находитесь в этой точке:
$UninstallStrings = Get-ItemProperty -Path "HKLM:\SOFTWARE\WoW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" |
Where-Object{$_.DisplayName -like $ProgramName} |
Select-Object -ExpandProperty UninstallString -ea SilentlyContinue
Затем вы можете взять эту переменную, разделив ее следующим образом:
$ExpandedUninstallString = $UninstallStrings -split "--"
$UninstallCommand = $ExpandedUninstallString[0]
$Arguments = $ExpandedUninstallString[1..($ExpandedUninstallString.Length)]
Что должно установить значение $ UninstallCommand равным строке, указывающей только на деинсталлятор, а также настройку существующих аргументов в этом массиве $ Arguments.
Также обратите внимание, что это нельзя расширить, чтобы охватить другие приложения, если вы не настроите его с помощьюнекоторые операторы if для проверки того, какой символ используется установочной строкой в качестве аргументов для этого конкретного приложения, и адаптировать разделитель разделения к этому конкретному списку аргументов.