Использование POWERShell CmdLet для вывода списка установленного программного обеспечения и извлечения имени программного обеспечения

У меня есть сценарий POWERSHELL, чтобы проверить наличие предопределенного списка программного обеспечения: $SoftList = "Microsoft Visual C++ 2005 Redistributable","TotoInexistant","GIMP 2.6.11" определить список программного обеспечения, которое я хочу проверить.

Я использую цикл для сравнения названия каждого программного обеспечения в приведенном выше списке, чтобы выполнить команду следующим образом:

 foreach($i in $SoftList)
{
$x = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
select DisplayName, Publisher, InstallDate | Where-Object {$_.DisplayName -like $i} 
$x
$x.DisplayName >> ListOf.txt # or we can to display it on screen 
}

Проблема, с которой я сталкиваюсь, заключается в том, что $x.DisplayName не записывает имя для "Microsoft Visual C++ 2005 Redistributable". Как извлечь имя программного обеспечения из переменной $ x?

2 ответа

Решение

Спасибо за вашу помощь, я нашел решение, на самом деле переменная $x для Microsoft Visual C++ 2005 Redistributable массив, может быть потому, что он установлен дважды,
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName, Publisher, InstallDate
вернуть две строки, содержащие информацию о Microsoft Visual C++ 2005 Redistributable, чтобы получить displayName в этом случае я адаптирую свой скрипт следующим образом:

 if($x-is [array])
 {
   for($k=0;$k-le $x.length-1;$k++)
   {
     $x[$k].DisplayName
   } 
}

Можете ли вы попробовать эту версию? Он использует ваш код с исправлениями Арко.

$SoftList = "Microsoft Visual C++ 2005 Redistributable","TotoInexistant","GIMP"

foreach($i in $SoftList)
{
    $x = Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | 
    select DisplayName, Publisher, InstallDate | Where-Object {$_.DisplayName -like $("$i*")} 

    $x.DisplayName 

    $x.DisplayName | Out-File "ListOf.txt" -Append -Force
} 

Я получаю вывод:

Microsoft Visual C++ 2005 Redistributable (x64)
GIMP 2.8.14
Другие вопросы по тегам