WSUS.DE
Willkommen Gast.



Einloggen oder Registrieren
   
  ÜbersichtHilfeSuchen Downloads EinloggenRegistrieren    
Seitenindex umschalten Seiten: 1
Thema versenden Drucken
Rechner automatisiert Durchstarten (Bei Bedarf (Gelesen: 820 mal)
lenny
Themenstarter Themenstarter
WSUS Senior Member
***
Offline


I Love LDAP!

Beiträge: 181
Geschlecht: male
Zeige den Link zu diesem Beitrag Rechner automatisiert Durchstarten (Bei Bedarf
21.06.11 um 16:20:52
 
Hallo Kollegen,

mir war es bisher immer ein Dorn im Auge mitten in der Nacht und am Wochenende unsere Server rebooten zu müssen, weil sonst keine Wartungsfenster vorhanden sind. (und bei 20-30 Servern kann sich das ziehen...)

Ich habe mal ein kleines Powershellscript gebastelt, dass mir diese Arbeit (hoffentlich) abnimmt.
Ich bin leider kein Powershellguru... oder anderstgesagt, dies ist meine erste Berührung mit der Powershell... also vergebt mir unnütze Aufrufe und umständliche Lösungswege  Durchgedreht

Wer Verbesserungsvorschläge hat bitte immer her damit... Augenrollen

Momentan suche ich noch eine Möglichkeit, mehrere Domains und WSUS Server abzufragen... aktuell durchsucht er nur sich selbst.

Leider ist das Script auch nur direkt auf dem WSUS Server lauffähig.

Das Script wickelt folgendes ab.

1. Prüfen welche Rechner einen Neustart benötigen.
2. Ausschluss von Rechnern die ich nicht starten möchte
3. Prüfung ob die Rechner überhaupt online sind
4. Neustart Durchgedreht
5. Prüfung ob die Rechner wieder online sind.
6. Falls nicht eine Benachrichtigung per Mail.

Code:
[reflection.assembly]::LoadWithPartialName("Microsoft.UpdateServices.Administration") | out-null 

if (!$wsus)
{
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer();
}
Remove-Item W:\Wsus\Clients_reboot_needed.txt
Remove-Item W:\Wsus\Clients_rebooted.txt

$file1 = "W:\Wsus\Clients_reboot_needed.txt"
$file2 = "W:\Wsus\Clients_rebooted.txt"

$computerScope = new-object Microsoft.UpdateServices.Administration.ComputerTargetScope;
$computerScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::InstalledPendingReboot;

$updateScope = new-object Microsoft.UpdateServices.Administration.UpdateScope;
$updateScope.IncludedInstallationStates = [Microsoft.UpdateServices.Administration.UpdateInstallationStates]::InstalledPendingReboot;

$computers = $wsus.GetComputerTargets($computerScope);

#hier können Rechner definiert werden die vom Neustart ausgeschlossen werden sollen.

$computers | foreach-object {
     $_.FullDomainName | foreach-object      {
           if ($_ -eq 'Server1.DOMAIN.de'){
           }
           
           elseif ($_ -eq 'Server2.DOMAIN.de'){
           }
           
           elseif ($_ -eq 'Server3.DOMAIN.de'){
           }
           
           elseif ($_ -eq 'Server4.DOMAIN.de'){      
           }
           
           elseif ($_ -eq 'Server5.DOMAIN.de'){
           }
                                                     
           elseif ($_ -eq 'Server6.DOMAIN.de'){
           }
           
           else {
           #Dies sind also alle Rechner die einen Neustart benötigen und neugestartet werden dürfen!
           out-file -filepath $file1 -inputobject $_ -append -encoding default
           }
     }
}

#Sind die Rechner überhaupt erreichbar?
$file1 = get-content W:\Wsus\Clients_reboot_needed.txt
foreach ($Linie in $file1) {
     if ( Test-Connection $Linie -count 1 -quiet ){
                       #ja sind Sie...
                       #Hier stehen nun alle Online Rechner mit Reboot pending
                       out-file -filepath W:\wsus\Clients_rebooted.txt -inputobject $Linie -append -encoding default
                       #Reboot endlich :D
                       #restart-computer -computername $Linie
     }
                 
}      

Start-Sleep -s 1800            

#Sind die Rechner nach dem Reboot per Ping erreichbar?

$file2 = get-content W:\Wsus\Clients_rebooted.txt                  
           foreach ($Linie2 in $file2) {
                 if ( Test-Connection $Linie2 -count 1 -quiet ){
                 
                 #be happy... Everything is allright      :-)
                 
                 }                              
                 
                 else {                  
                       #Mailbenachrichtigung im Fehlerfall
                       function sendmail($body)
                                   {
                                   $SmtpClient = new-object system.net.mail.smtpClient
                                   $MailMessage = New-Object system.net.mail.mailmessage
                                   $SmtpClient.Host = "mail.DOMAIN.de"
                                   $mailmessage.from = "WSUS@DOMAIN.de"
                                   $mailmessage.To.add("MEIN.NAME@DOMAIN.de")
                                   $mailmessage.Subject = $Linie2 +' nach 30min nicht online'
                                   $MailMessage.IsBodyHtml = $true
                                   $mailmessage.Body = $body
                                   $smtpclient.Send($mailmessage)
                                   }
                                   
                                   $body =  $Linie2 +' ist nicht via ping erreichbar. Bitte umgehend prüfen'
                                   sendmail $body
                 }
           }
           




Grüße und viel Spass damit

Lenny
Zum Seitenanfang
 
 
Sunny
Microsoft MVP
*****
Offline



Beiträge: 11.347
Geschlecht: male
Zeige den Link zu diesem Beitrag Re: Rechner automatisiert Durchstarten (Bei Bedarf
Antwort #1 - 21.06.11 um 16:46:14
 
Wow, cooles Script, vielen Dank von meiner Seite. Zwinkernd
Zum Seitenanfang
 

Media Dateien und klickbare Links in Beiträgen und Signaturen sind nur für registrierte Mitglieder verfügbar!!  Du musst Dich Einloggen oder Registrieren
Media Dateien und klickbare Links in Beiträgen und Signaturen sind nur für registrierte Mitglieder verfügbar!!  Du musst Dich Einloggen oder Registrieren
Homepage  
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 685
Halle (Saale)
Geschlecht: male
Zeige den Link zu diesem Beitrag Re: Rechner automatisiert Durchstarten (Bei Bedarf
Antwort #2 - 17.07.11 um 11:16:59
 
Hi lenny,

lenny schrieb am 21.06.11 um 16:20:52:
Leider ist das Script auch nur direkt auf dem WSUS Server lauffähig.


Das liegt daran, dass das Assembly [Microsoft.UpdateServices.Administration] nicht standardisiert zum .NET gehört. Installier doch die WSUS-Konsole auf eine Wks. Dann wird das Assembly im GlobalCache registriert und Dein Script kann auch von dort aus laufen.
Voraussetzung ist min. eine Leseberechtigung auf dem WSUS-Server. Leider gibt es kein explizites LogOn im Sinne:

Code:
$wsus = [Microsoft.UpdateServices.Administration.AdminProxy]::GetUpdateServer($user, $pwd); 



Gruß Dani
Zum Seitenanfang
 
 
DESoft
WSUS Experte
*****
Offline


I Love WSUS!<br />

Beiträge: 685
Halle (Saale)
Geschlecht: male
Zeige den Link zu diesem Beitrag Re: Rechner automatisiert Durchstarten (Bei Bedarf
Antwort #3 - 19.07.11 um 00:48:22
 
Hi lenny,

siehe mal hier:    Zwinkernd

Media Dateien und klickbare Links in Beiträgen und Signaturen sind nur für registrierte Mitglieder verfügbar!!  Du musst Dich Einloggen oder Registrieren

Gruß Dani
Zum Seitenanfang
 
 
lenny
Themenstarter Themenstarter
WSUS Senior Member
***
Offline


I Love LDAP!

Beiträge: 181
Geschlecht: male
Zeige den Link zu diesem Beitrag Re: Rechner automatisiert Durchstarten (Bei Bedarf
Antwort #4 - 25.07.11 um 14:41:30
 
Hallo,

danke für den Link... habe meinen alten Beitrag schon vergessen gehabt... ich werde es prüfen sobald es meine Zeit zulässt.

Grüße
Zum Seitenanfang
 
 
Seitenindex umschalten Seiten: 1
Thema versenden Drucken

Link zu diesem Beitrag