Blogbeitrag

17 | 08 | 2016

PowerShell Hack: Schnelle Übersicht über Updates gewinnen

Geschrieben von um 12:01 Uhr

Wenn wir „einfach nur“ wissen wollen, wann auf einem Haufen Maschinen zuletzt Updates installiert wurden und wie viele noch jeweils ausstehen, kann man sich wie folgt behelfen:

$servers = @('SERVER01'
,'SERVER02'
,'SERVER03'
# usw.
)
$script_block = $ExecutionContext.InvokeCommand.NewScriptBlock(@'
$wu_session = New-Object -COM "Microsoft.Update.Session";
$wu_searcher = $wu_session.CreateUpdateSearcher();
$last_instd = ($wu_searcher.QueryHistory(0,1)).Item(0).Date;
$wures = $wu_searcher.Search("IsInstalled=0 and Type='Software'");
$updates_to_install = $wures.Updates.Count;
"$($env:COMPUTERNAME) | $last_instd | $updates_to_install"
'@)
Invoke-Command -ComputerName $servers -ScriptBlock $script_block

Die Reihenfolge der zurückgelieferten Ergebnisse läßt sich hier aber nicht vorhersagen. Möchte man die Ergebnisse genau in der Reihenfolge sehen, wie die Server eingegeben wurden, müsste man den Aufruf einzeln auslösen. Die letzte Zeile ist dann durch

foreach ($server in $servers) {
    Invoke-Command -ComputerName $server -ScriptBlock $script_block
}

zu ersetzen.

Die Auswahl der zu untersuchenden Computer läßt sich freilich auch automatisieren. Um z.B. Überblick über alle Computer in einer OU zu gewinnen, kann man Anfang die Definition des Arrays durch

$servers = (Get-ADComputer -Filter * -SearchBase "OU=Computer,OU=Firma,DC=meine,DC=domain,DC=de" -SearchScope Subtree).Name

ersetzt werden.

Beitragsdetails

Tags » , , , «

gravatar

Kategorie » Microsoft, PowerShell, Server «

Trackback: Trackback-URL |  Kommentar-Feed: RSS 2.0 | 213 Worte

Beitrag kommentieren

Kommentar schreiben ...

Deine E-Mail-Adresse wird nicht veröffentlicht.

(X)HTML Tags zur Formatierung der Kommentare

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>