CDC–Cloud & Datacenter Conference Germany 2017

eingetragen in: Hyper-V, Vorträge | 0

Am 4. und 5.Mai 2017 findet die zweite CDC Germany in München in den Räumen der Microsoft Deutschland statt:

https://www.cdc-germany.de/

image

Als erfahrender Besucher von community und kommerziell betriebenen technischen Veranstaltungen und Konferenzen sticht die CDC besonders positiv hervor!

Man hat nicht das Gefühl Marketing-Foliensätze von vertrieblich getriebenen, halbtechnischen Vortragenden, wie auf so mancher Herstellerveranstaltung, präsentiert zu bekommen, sondern es werden extrem tiefgehend technische Themen betrachtet und vor allem auch Grenzen und Probleme der Produkte offen angesprochen.

Direkt durch Hersteller gestellte Vortragende machen das in der klaren Art und Weise auf Veranstaltungen leider nur sehr selten.

Trotz der notwendigen Professionalität der Veranstaltung, welche auf anderen Community Events manchmal etwas zu untergeordnet ist, kommt auch das von mir sehr geschätzte sogenannte „Networking“ nicht zu Kurz und hat reichlich Raum. Der Veranstaltungsort hat dies durch seine offene aber auch zusammenhängende Gestaltung des Vortrags- und Partnerbereichs sehr gefördert. Ich hoffe das wird in 2017 am neuen Ort in München auch wieder so gut klappen.

Mein Ticket habe ich schon am ersten Tag der EarlyBird Phase gebucht und noch weitere Mitarbeiter unserer Firma für die Reise nach München begeistern können, so dass wir mit 400% der Personen teilnehmen werden wie zuletzt! Smile

Powershell: Cluster-Test Automatisierung und Anlage einer Clustertest-Bericht-Historie auf SMB Share

eingetragen in: Clustering, Core, Powershell | 0

Problemstellung: automatisierte Clustertests für alle Cluster in allen Domänen durchführen und die Reports auf einem Fileserver ablegen, um diese Berichte im Falle eines Supportcase direkt zugänglich zu haben und auch eine Historie der Berichte jedes Clusters einsehen zu können.

Eine Aufgabe für PowerShell:

test-cluster

Ist in der Lage den resultierenden Bericht mittels des Attributes –ReportName im Namen anzupassen

test-cluster –cluster Cluster10 –ReportName meinReport

z.B. erzeugt eine meinReport.mht Datei des Berichtes über den Cluster10.

Gut, aber kann test-cluster auch den Pfad des Berichtes verändern?
Jap, kein Problem:

test-cluster –cluster Cluster10 –ReportName c:\Temp\Reports\meinReport

Erzeugt eine meinReport.mht Datei im Verzeichnis C:\Temp\Reports.
Ok, dieser Pfad muss dafür existieren…das Prüfen und Korrigieren wir später mittels:

if( -not (Test-Path C:\Temp\Reports) )
{
    New-Item C:\Temp\Reports -type directory
}

den Bericht an einen anderen lokalen Pfad Umleiten geht also…aber evtl. ist das ja kein Laufwerksbuchstabe, auf dem die Reports abgelegt werden sollen, sondern ein UNC/SMB Pfad…
Aber, auch das geht mit test-cluster:

test-cluster –cluster Cluster10 –ReportName \\VMM\c$\Temp\Reports\meinReport

erstellt eine meinReport.mht auf dem VMM Server unter C:\Temp\Reports… fein fein 🙂

Da ja eine Historie, also ein Archiv mit Berichten aller Cluster vorgehalten werden soll, macht es Sinn, die Dateien nicht alle meinReport.mht zu nennen, sondern mit dem Clusternamen und Datum sowie u.U. auch dem Domainnamen zu versehen. Auf letzteres könnte ich hier bei dem Kunden verzichten, da ein Ablageort/Fileserver je Domain vorgesehen wurde, habe es aber trotzdem mit eingebaut, schadet ja nicht:

Dazu ersetzen wir zuerst die –cluster und –Reportname Attribute unseres PowerShell commandlets test-Cluster durch Variablen, die wir im Folgenden dann mit “Leben” füllen:

test-cluster -cluster $cluster -ReportName $reportname

Also brauchen wir aktuell $cluster und $reportname als Eingangsvariable für unser Skript.

Um die Berichte auf dem Fileserver später zuerst nach Clusternamen und dann nach Erstellungsdatum/Zeit sortiert zu bekommen, kann man den Reportnamen wie folgt u.A. mit der Datumfunktion anpassen:

$domain = $env:USERDOMAIN
$reportpath =
\\vmm\c$\Temp\Reports\
$date = get-date -Format yyyy.MM.dd.HH.mm.ss
$reportname = $reportpath+$domain+“_“+$cluster+“_“+$date

get-date liefert ohne weitere Parameter einen Wert, der nicht für Dateipfade verwendbar ist, da er ggf. / und : enthält. Auch der –Format s Parameter den ich zuerst verwendete weil er einen “sortierbare” Ausgabe erstellt, wurde aufgrund der Doppelpunkte nicht brauchbar.

Man kann die Rückgabe von get-date aber glücklicherweise sehr individuell anpassen und bekommt mit dem von mir verwendeten –Format yyyy.MM.dd.HH.mm.ss das Format Jahr.Monat.Tag.Stunde.Minute.Sekunde jeweils als Zahl und min. zweistellig zurück, so dass nachher Berichte schon aufgrund des Dateinamens auch chronologisch sortiert werden.

Um alle Cluster einer Domain zu verarbeiten, erstelle ich zuerst eine Liste aller Cluster in die Variable $clusters:

$clusters = get-cluster -Domain $domain

Diese wird dann einfach über eine ForEach Schleife unter jeweiligem Setzen des entsprechenden $reportname abgearbeitet:

ForEach ($cluster in $clusters)
     {
     $reportname = $reportpath+$domain+“_“+$cluster+“_“+$date
     test-cluster -cluster $cluster -ReportName $reportname
     }

Um (optionale) Parameterübergaben für die Domäne, den Reportpfad, sowie den Cluster erweitert sieht das vollständige Skript aktuell wie folgt aus:
(wird immer wieder mal erweitert/angepasst)

#########################################################################################
#### Cluster Validation Test Script for scheduled Testing of Clusters ####

#### Author: Oliver Sommer, TrinityComputer.de GmbH

#########################################################################################

param(
[string]$domain = $env:USERDOMAIN,
[string]$reportpath,
[string]$cluster
)

# Prüfung, ob $reportpath übergeben wurde (leer ist) und falls nicht:
# Entscheidung welcher domänenspezifische $reportpath (Fileshare) zu verwenden ist
If (!$reportpath)
{
     If ($domain –eq „Dom1“)
     {
         $reportpath = „\\fileserver1\Reportspfad\“
     }

    If ($domain -eq „Dom2“)
     {
         $reportpath = „\\Fileserver2\Reportspfad\“
     }

    If ($domain -eq „Dom3“)
     {
         $reportpath = „\\Fileserver3\Reportspfad\“
     }
     If ($domain -eq „3CAN“)
     {
         $reportpath = „\\vmm\c$\Temp\Reports\“
     }
}

Clear-Host

# Prüfung ob $reportpath existiert und ggf. Erstellen des Pfades
if( -not (Test-Path $reportpath) )
{
    New-Item $reportpath -type directory
    Write-Host
    Write-Host Verzeichnis $reportpath erstellt!
    Write-Host
}

#Alle Cluster der Domäne in $clusters schreiben:
$clusters = get-cluster -Domain $domain
Write-Host In der AD DS Domäne $domain sind folgende Cluster vorhanden:
Write-Host $clusters
Write-Host

#sortierbares Datum in $date schreiben
$date = get-date -Format yyyy.MM.dd/_HH.mm.ss

# Falls ein spezifischer Cluster beim Skriptaufruf übergeben wurde:
If ($cluster)
{
     Write-Host Starte Validationtest für Cluster $cluster…
     Write-Host
     $reportname = $reportpath+$domain+“_“+$cluster+“_“+$date
     test-cluster -cluster $cluster -ReportName $reportname
}

# Prüfen ob $cluster als Attribut beim Skriptaufruf übergeben wurde, also ob es leer ist oder nicht:
If (!$cluster)
{
Write-Host Starte Validationtests für alle Cluster der Domäne $domain…
Write-Host
# Clusterbericht für jeden Cluster der Domain ausführen und individuellen Report ablegen:
ForEach ($cluster in $clusters)
     {
     $reportname = $reportpath+$domain+“_“+$cluster+“_“+$date
     test-cluster -cluster $cluster -ReportName $reportname
     }

}