Seitenindex umschalten Seiten: 1 [2]  Thema versendenDrucken
Heißes Thema (mehr als 10 Antworten) WSUS-Statistiken über die PowerShell abrufen (Gelesen: 13842 mal)
soj
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 4
Mitglied seit: 22.01.10
Re: WSUS-Statistiken über die PowerShell abrufen
Antwort #15 - 09.04.10 um 07:57:09
Beitrag drucken  
Hallo MartinG,

Ich möchte nur den Hauptserver abfragen. Es gibt auch Updates, die auf den Clients benötigt werden und die nicht freigegeben sind. Vorrangig interessieren mich aber die Clients mit den Fehlern, danach die fehlenden Updates.
Das mit dem Email versenden hört sich super an, das werde ich doch gleich mal einbauen.
Ich denke ich werde das Powershell Script etwas ausbauen und nach meinen Bedürfnissen anpassen.

Gruß SOJ Smiley
  
Zum Seitenanfang
 
M4tRiX
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 1
Mitglied seit: 20.09.10
Re: WSUS-Statistiken über die PowerShell abrufen
Antwort #16 - 20.09.10 um 15:13:16
Beitrag drucken  
Auch wenn der Thread hier ein bisschen älter ist habe ich noch eine Frage dazu...

Die Statistiken mit den Downstream-Server funktioniert alles bestens nur die Angabe "GetComputersNotContactedSinceCount" ist bei den Downstreamserver unbekannt. Ich habe die beiden Skripte von MartinG zusammengefügt und dann verwendet.

Ich habe nur den foreach-Teil überarbeitet..

So sieht der jetzt aus..

Code
foreach ($downstreamserver in $downstreamservercollection)
{    $downstreamservername = $downstreamserver.FullDomainName
      $downstreamserverstatus = $downstreamserver.GetStatus()
      $downtotalComputers = $downstreamserverstatus.ComputerTargetCount
      $downcomputersUpToDate = $downstreamserverstatus.ComputersUpToDateCount
      $downcomputersNeedingUpdates = $downstreamserverstatus.ComputerTargetsNeedingUpdatesCount
      $downcomputersWithErrors = $downstreamserverstatus.ComputerTargetsWithUpdateErrorsCount
      $downtotalUpdates = $downstreamserverstatus.UpdateCount
      $downupdatesUpToDate = $downstreamserverstatus.UpdatesUpToDateCount
      $downupdatesNeeded = $downstreamserverstatus.UpdatesNeededByComputersCount
      $downupdatesWithErrors = $downstreamserverstatus.UpdatesWithClientErrorsCount
      # needed, but not approved updates
      $downupdateScope = new-object Microsoft.UpdateServices.Administration.UpdateScope
      $downupdateScope.ApprovedStates = [Microsoft.UpdateServices.Administration.ApprovedStates]::NotApproved
      $downupdateServerStatus = $wsus.GetUpdateStatus($downupdateScope, $TRUE)
      $downupdatesNeededByComputersNotApproved = $downstreamserverstatus.UpdatesNeededByComputersCount
      # computers that did not contact the server in $daysBeforeWarn days
      $timeSpan = new-object TimeSpan($daysBeforeWarn, 0, 0, 0)
      $downcomputersNotContacted = $wsus.GetComputersNotContactedSinceCount([DateTime]::UtcNow.Subtract($timeSpan))
      # computers in the "not assigned" group
      $downcomputerTargetScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope
      $downcomputersNotAssigned = $wsus.GetComputerTargetGroup([Microsoft.UpdateServices.Administration.ComputerTargetGroupId]::UnassignedComputers).GetComputerTargets().Count
 # output   
 "Downstream server $downstreamservername"
 "--------------------------------------------------"
"Total Computers:                  $downtotalComputers"
"Computers up to date:                  $downcomputersUpToDate"
"Computers needing updates:            $downcomputersNeedingUpdates"
"Computers with errors:                  $downcomputersWithErrors"
"--------------------------------------------------"
"Total Updates:                        $downtotalUpdates"
"Updates up to date:                  $downupdatesUpToDate"
"Updates needed by computers:            $downupdatesNeeded"
"Updates with errors:                  $downupdatesWithErrors"
"--------------------------------------------------"
"Updates that need to be approved:      $downupdatesNeededByComputersNotApproved"
"Computers not contacted in $daysBeforeWarn days:      $downcomputersNotContacted"
"Unassigned computers:                  $downcomputersNotAssigned"

#Output in die Datei

"Servername:"  + $downstreamservername | Add-content $datei
"Total Computers: " + $downtotalComputers | Add-content $datei
"Total Updates: " + $downtotalUpdates | Add-content $datei
"Computers up to Date: "+ $downcomputersUpToDate | Add-content $datei
"Computers needed Updates: " +$downcomputersNeedingUpdates | Add-content $datei
"Computers with Error: " + $downcomputersWithErrors | Add-content $datei
"Updates up to Date: " + $downupdatesUpToDate | Add-content $datei
"Updates needed by Computer: " + $downupdatesNeeded | Add-content $datei
"Updates with Client Errors: " + $downupdatesWithErrors | Add-content $datei
"Updates that need to be approved: " + $downupdatesNeededByComputersNotApproved | Add-content $datei
#"Computers not contacted in $daysBeforeWarn days: " + $downcomputersNotContacted | Add-content $datei
"Unassigned computers: " + $downcomputersNotAssigned | Add-content $datei
"___________________________________________" | Add-content $datei
}
 



Könnt ihr mir helfen wieso PowerShell "GetComputersNotContactedSinceCount" nicht kennt? Derzeit habe rufe ich diese Information über die Variable "$wsus" auf. Das ist bestimmt falsch, weil ich erhalte in dem Fall die Daten des Upstream-Servers.. Was ja auch logisch ist. Aber was muss ich da eintragen damit die downstreamdaten abgefragt werden?

  
Zum Seitenanfang
 
s_it
WSUS Neuling
Offline


I Love WSUS!

Beiträge: 1
Mitglied seit: 10.03.11
Re: WSUS-Statistiken über die PowerShell abrufen
Antwort #17 - 10.03.11 um 15:55:26
Beitrag drucken  
Hallo MartinG,
ich bin neu in WSUS Group, ich arbeite seit 4 Wochewn bei ine Firma, die das Nagios überwachungstool zu bestimmte MS Server 2003 und SBS 2008 ansetzt und das Server Monitoring wird auch zu meiner zentralen Aufgabe sein.

Frage:

wie liefert man nur die Server Update ( Windows Patches) Information zu Nagios??

wie bindet man solche Scripte bzw. Plugin oder eine fertige Vorlage ??

ich möchte direkt im nagios festellen welche updates schon insrtalliert aud den server und welche fehlen??

bin dankbar für eine Antwort.

Gruß
s_it

Smiley
  
Zum Seitenanfang
 
MartinG
WSUS Junior Member
*
Offline



Beiträge: 41
Mitglied seit: 11.09.09
Geschlecht: männlich
Re: WSUS-Statistiken über die PowerShell abrufen
Antwort #18 - 28.03.11 um 11:03:35
Beitrag drucken  
M4tRiX schrieb on 20.09.10 um 15:13:16:
[...]
Könnt ihr mir helfen wieso PowerShell "GetComputersNotContactedSinceCount" nicht kennt? Derzeit habe rufe ich diese Information über die Variable "$wsus" auf. Das ist bestimmt falsch, weil ich erhalte in dem Fall die Daten des Upstream-Servers.. Was ja auch logisch ist. Aber was muss ich da eintragen damit die downstreamdaten abgefragt werden?


Moin M4tRiX, da kann ich dir leider nicht helfen, da wir bei uns keine Downstream-Server einsetzen und ich es somit nicht testen kann.


s_it schrieb on 10.03.11 um 15:55:26:
[...]
Frage:

wie liefert man nur die Server Update ( Windows Patches) Information zu Nagios??

wie bindet man solche Scripte bzw. Plugin oder eine fertige Vorlage ??

ich möchte direkt im nagios festellen welche updates schon insrtalliert aud den server und welche fehlen??

bin dankbar für eine Antwort.

Gruß
s_it

Smiley

Moin s_it, mal sehen, wie ich dir helfen kann.
Für eine Liste, welche Patches auf einem Server noch fehlen, würde ich Nagios nicht unbedingt einsetzen wollen. Nagios erlaubt ja nur relativ kurze Text-Meldungen, siehe hier:
(Du musst Dich Einloggen oder Registrieren um Multimediadateien oder Links zu sehen).

Im Prinzip sollte jedes Nagios Plugin nur eine Zeile Text zurückgeben. Es wird schwierig werden, dort eine Liste aller fehlenden Patches unterzubringen.

Deine Frage zur Einbindung verstehe ich nicht ganz, aber ich werde mal beschreiben, wie ich es bei uns eingebunden habe. Musst nachfragen, wenn noch etwas fehlt.

Wie das Skript von der PowerShell gestartet wird, hatte ich ja gleich im ersten Beitrag schon beschrieben. Damit Nagios es starten und die Rückgabe auslesen kann, nutze ich NRPE (Nagios Remote Plugin Execute) - ein Windows-Dienst zur Abfrage lokaler Werte, aufgerufen vom Nagios-Server.

Damit der NRPE auf dem WSUS-Server das Skript aufrufen kann, musst du in der NSC.ini folgende Zeile hinzufügen:
Code
[NRPE Handlers]
nrpe_wsus=cmd /c echo scripts\wsus.ps1 | powershell -command -
 



Auf dem Nagios-Server musst du dann ein Kommando definieren, z.B. so:
Code
define command {
  command_name   check_nrpe_wsus
  command_line   $USER1$/check_nrpe -H $HOSTADDRESS$ -c nrpe_wsus -t 20
}
 



Zuletzt musst du dann nur noch beim WSUS-Server (in Nagios "Host") den Service einfügen:
Code
define service {
  use                     generic-service
  host_name               xxx
  service_description     WSUS Status
  check_command           check_nrpe_wsus
  normal_check_interval   60
}
 



Nagios sollte nun nach dem nächsten Restart den neuen Service finden und per NRPE die Daten vom WSUS-Server abholen. Smiley
  
Zum Seitenanfang
 
Seitenindex umschalten Seiten: 1 [2] 
Thema versendenDrucken
Bookmarks: Facebook Google Google+ Linked in Twitter Yahoo
 



Nutzungsbedingungen | Datenschutz
Kontakt | RSS | Feedback | Impressum
Facebook | News einsenden