3 votes

Liste des mises à jour Windows en attente depuis la ligne de commande

wmic qfe list me donne une liste des mises à jour Windows installées sur mon système.

Comment puis-je obtenir la liste de ceux qui ne sont pas installés (y compris s'ils ont été cachés ou non) ?

Je souhaite utiliser la liste dans un autre programme que je suis en train de développer, et j'aurai donc besoin que la sortie soit une sorte de tableau dans un fichier, tel que csv ou délimité par des tabulations.

4voto

w32sh Points 10300

Pas en ligne de commande, mais j'ai pensé que ce script de MSDN pourrait aider.

Source : WU Searcher WMI script de MSDN

Rechercher les mises à jour disponibles dans WU et les répertorier

Set updateSession = CreateObject("Microsoft.Update.Session")
updateSession.ClientApplicationID = "MSDN Sample Script"

Set updateSearcher = updateSession.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCRLF

Set searchResult = _
updateSearcher.Search("IsInstalled=0 and Type='Software' and IsHidden=0")

WScript.Echo "List of applicable items on the machine:"

For I = 0 To searchResult.Updates.Count-1
    Set update = searchResult.Updates.Item(I)
    WScript.Echo I + 1 & "> " & update.Title
Next

If searchResult.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
    WScript.Quit
End If

Le segment de code ci-dessus permet de rechercher les mises à jour disponibles dans WU et de les lister sans les télécharger. La partie restante du script de MSDN consiste à télécharger chacune des mises à jour disponibles.

Copiez le code dans le bloc-notes et sauvegardez-le avec la mention .vbs extension.

4voto

Will Points 21

Voici un script powershell script rapide pour lister les mises à jour disponibles, si rien n'est renvoyé, c'est qu'aucune mise à jour n'est disponible. Il y a deux options pour $r listées ci-dessous, vous pouvez voir comment elles diffèrent.

$u = New-Object -ComObject Microsoft.Update.Session
$u.ClientApplicationID = 'MSDN Sample Script'
$s = $u.CreateUpdateSearcher()
#$r = $s.Search("IsInstalled=0 and Type='Software' and IsHidden=0")
$r = $s.Search('IsInstalled=0')
$r.updates|select -ExpandProperty Title

0voto

Vilmantas Points 1

Si vous souhaitez le faire en une seule fois sur un PC distant :

Invoke-Command -ComputerName <ComputerName> -ScriptBlock {((New-Object -ComObject Microsoft.Update.Session).CreateUpdateSearcher()).Search('IsInstalled=0 and IsHidden=0').updates | Select-Object -Property Title,IsDownloaded,RebootRequired | ft -AutoSize}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X