Как я получаю первый вывод перед командой — Powershell

#powershell

#powershell

Вопрос:

Как мне получить первый вывод команды? Я хочу взять идентификационный номер.

Я попробовал следующую команду:

 $app = Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -Like "App"}
$getNumber = $app[1]

OutPut:
    IdentifyingNumber : {00000-00000-0000-000000000}
    Name              : App
    Vendor            : App 
    Version           : 1.0.0
    Caption           : App, Inc.
  

Комментарии:

1. $app[$index].IdentifyingNumber

2. Спасибо, это мне так помогло @MathiasR.Jessen

Ответ №1:

Технически, если вы вводите [1], он выбирает второй объект в массиве, поскольку они начинаются с [0], поэтому, если вы хотите, чтобы первый сделал $var = $app[0].IdentifyingNumber

Комментарии:

1. Спасибо, как мне использовать этот результат $app [0]. ОпределениеNumber в переменной? Я хочу использовать IdentifyingNumber для вызова процесса msiexec.

2. @bmoreira18 Вы имели в виду, что хотите извлечь UninstallString ?

3. @Hackoo Нет, я хочу распечатать IdentifyingNumber : {00000-00000-0000-000000000} это приложение, я пытаюсь удалить, нужно перезагрузить компьютер, чтобы завершить удаление, в моем скрипте я пытаюсь использовать IdentifiyngNumber для вызова msiexec.exe и используйте параметр /norestart .

4. Если вы зайдете в реестр, в нем будет запись со строкой удаления? затем просто отметьте этот флаг перезапуска o? также просто присвоите его переменной?

5. Спасибо @Isaac, этот аргумент открыл мне разум, оставайся в безопасности 😉

Ответ №2:

я создал следующий сценарий, и он сработал так хорошо, спасибо за все, если я кому-то помогу, это сценарий.

 $Keys = Get-ChildItem "HKLM:SOFTWAREMicrosoftWindowsCurrentVersionUninstall"

foreach ($subkey in $Keys) {

if($subkey.Name -notmatch "InstallWIX_"){

    Set-Location -Path $subkey.PSPath
    $app1 = Get-ItemProperty -Path "." | Where-Object displayname -Match "app1"
    $app2 = Get-ItemProperty -Path "." | Where-Object displayname -Match "app2"

    $GUID_APP1 = $app1.PSChildName
    $GUID_APP2 = $app2.PSChildName

    if ($app1.Displayname -eq "APP1") {
        amp; cmd /c msiexec.exe /x $GUID_APP1 /qn /norestart
    
    } elseif ($app2.Displayname -eq "APP2") {
        amp; cmd /c msiexec.exe /x $GUID_APP2 /qn /norestart
    
    }

}
}