2015-11-18 3 views
1

Я пытаюсь выяснить сценарий, который поможет мне перечислить все обновления Microsoft, установленные в моей системе. Я используюPowershell для перечисления всех обновлений для Microsoft на компьютере?

Get-Hotfix 

сделать то же самое, но я не получаю желаемые результаты. Также нет:

Get-WmiObject -Class "win32_quickfixengineering" | 
where $_.name = "Microsoft" 

Это работает для меня. Пожалуйста, помогите.

+0

http://stackoverflow.com/a/33732971/381149 –

+0

Будет ли это получить меня только обновления Microsoft или все из них, потому что это то, что я уже сделал. –

+0

Какие не-обновления Microsoft вы видите при запуске? – sodawillow

ответ

0

Вы можете использовать этот скрипт (не найти способ отображения описания с помощью Get-HotFix).

В нем перечислены программы, найденные в Uninstall ключах реестра Windows, и соответствует имени снова в строке $filter.

Вы можете удаленно получить эту информацию с другого компьютера, изменив $computerName (в настоящее время местный хост).

#store computer name in a variable 
$computerName = $env:COMPUTERNAME 

#store filter string in a variable 
$filter = "KB" 

#declare results array 
$result = @() 

#store registry key paths in an array 
$keyList = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\', 
      'SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\' 

#open registry hive HKLM 
$hive = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey([Microsoft.Win32.RegistryHive]::LocalMachine, $computerName) 

#for each key path 
foreach($key in $keyList) { 

    #open key 
    $uninstallKey = $hive.OpenSubKey($key) 

    #if key has been opened 
    if($uninstallKey) { 

     #list program keys 
     $programList = $uninstallKey.GetSubKeyNames() 

     #for each key 
     foreach($program in $programList) { 

      #get the program name 
      $programName = $uninstallKey.OpenSubKey($program).GetValue("DisplayName") 

      #if the program name is not null and matches our filter 
      if(($programName) -and ($programName -like "*$filter*")) { 

       #add program name to results array 
       $result += $programName 
      } 
     } 
    } 
} 

#sort and output results array 
$result | Sort-Object 
+0

Это работает для меня, но, поскольку я очень нехорошо в powershell, не могли бы вы объяснить, что здесь происходит? –

+0

Я приведу некоторое объяснение (я на работе, мне нужно найти свободное время ^^) – sodawillow

+0

Да, конечно. Также я хотел бы знать, почему фильтр является «KB». –