Artikel mit Schlagwörtern‘script’

powershell 2 script – read OS name – Service Pack – last boot – up time

0

powershell 2 script – read OS name – Service Pack – last boot – up time


# read info from the current host
# replace "." with your remote host - if you like
$OS = get-wmiobject win32_operatingsystem -ComputerName .

# default values
$OSSP = "{n.a}"
$OSName = "{n.a}"
$OSLastBoot = "{n.a}"
$OSUpTime = "{n.a}"

#check host values are not equal null
if($OS.CSDVersion -ne $Null) {
    $OSSP = $OS.CSDVersion.toString()
}
if($OS.Caption -ne $Null) {
    $OSName = $OS.Caption.toString()
}
if($OS.LastBootUpTime -ne $Null ) {
    $OSLastBoot = $OS.converttodatetime($OS.LastBootUpTime)
    $OSUpTime =  New-TimeSpan (get-date $OSLastBoot)
}
# String.Format example in powershell
$out = [String]::Format("OS name : {0} - Service Pack : {1} - Last Boot at : {2} `n",
$OSName, $OSSP,$OSLastBoot)
$out += [String]::Format("Server Up Time is in Days : {0} - Hours : {1} - Min : {2}",
$OSUpTime.Days , $OSUpTime.Hours , $OSUpTime.Minutes)

# console output
Write-Host $out

source file => on my github.com repo

have fun


Custom XML Export from VMWare ESX Event Log mit der PowerShell

2

Diese einfache Technik verwende ich im Umgang mit der PowerShell um ein Custom XML Export zu erstellen. In diesem einfachen Beispiel werden wir das Event Log vom VMWare ESX exportieren. Ich hab aber diese Art von Custom Export auch schon unter Windows Server 2k3 und 2k8 verwendet. Ein guter Start, um so was zu machen ist zuerst das XML Dokument zu definieren. Dazu verwende ich einen einfachen Text Editor. Ich habe zudem auch gleich ein paar Beispiel Daten eingefügt.

VMWare-PowerShell-101-001

VMWare-PowerShell-101-001

So soll unser Export aussehen nachdem unser PowerShell Script lief. Das ganze ist so ausgelegt, das N <event> Tag’s eingespielt werden.

Man kann das ganze nach belieben und Projekt Anforderungen anpassen. In meinem Fall habe ich z.B die Tag’s LogName und EventType definiert. Wo nicht zum Standard Output vom Event log vom ESX gehören.
Jetzt kommen wir zu unserem PowerShell Script. Ich verwende in diesem Beispiel die PowerShell 2.0 von Windows und die aktuelle Erweiterung von VMware für die PowerShell.

Zuerst definiere ich eine generische Liste, so wie wir es kennen von C#. Die generische Liste ist unser Container für die $EntryTypes die wir auslesen möchten. Wir wollen in unserem Export nur die Events Error und Warning anzeigen.

# Liste erstellen
$EntryTypes = New-Object "System.Collections.Generic.List[string]";

# Liste bestücken
$EntryTypes.Add("Error");
$EntryTypes.Add("Warning");

Danach machen wir die Verbindung zu unserem ESX Server. Das Verbindungs Objekt speichern wir in der Variablen $con ab. Damit wir später die Verbindung wider freigeben können. Für den Aufbau der Verbindung ist ein User/Password nötig. In meinem Beispiel ist es Sysuser/12345 auf den ESX Server wo über die IP 192.168.1.25 erreichbar ist.

# Verbindung zum ESX herstellen
$con = Connect-VIServer Server 192.168.1.25 Protocol https User SysUser Password 12345

Jetzt definiere ich ein paar Umgebung’s Variablen, diese Variablen könnten auch Argumente sein, wo beim Start des Scripts mitgegeben werden. Oder durch das Script zur Laufzeit vom System ausgelesen werden.

# 1 Tag in der Vergangenheit
$day = (Get-Date).addDays(-1)
$LogName = "ESX Event Log"
$CompanyName = "Firma XY"
$ComputerName = get-content env:computername
$CurrentShort = Get-Date -format "dd/MM/yyyy"

Jetzt definieren wir unser Custom XML, das ganze habe ich in eine Methode eingepackt mit dem Namen XMLEventList wo als Parameter die Liste von der Abfrage des Event Log mitgibt. Zudem den $LogName, $EntryType und das Auslese Datum.
In der Methode erstellen wir einen Foreach Schleife über die Liste und verarbeiten dabei die Wert in ein XML string Struktur.
Der Rückgabe Wert ist dann die $xml Variable.

VMWare-PowerShell-101-002

VMWare-PowerShell-101-002

Wichtig ist das die PowerShell Methoden immer zuerst definiert wird bevor sie verwendet wird. Der PowerShell Context/Scope kennt nur das was zuerst definiert ist.

Jetzt starten wir den Aktiven Bereich in unserem Script. Zuerst definieren wir unseren xml Header. Dann machen wir eine Foreach Schleife über unsere EntryTypes Liste und lesen dabei das Event Log vom ESX aus. Dannach übergeben wir die ganzen Variablen unserer Methode. Nach der Schleife schliesen wir das Root Tag von unserem Custome XML. Mit Dem += machen wir einen string Append, so wie wir es kennen aus C#.

# XML Root Header
$XMLEvent =""

foreach ($EntryType in $EntryTypes)
{
    $list = Get-VIEvent -Type $EntryType -Start $day
    $XMLEvent +=  XMLEventList $list $LogName $EntryType $day
}
# close the XML Doc
$XMLEvent +=""

Zum Schluss schreiben wir das $XMLEvent auf die Harddisk und schliessen die Verbindung $con zum ESX Server. Jetzt können wir das ganze XML z.B mit Firefox anschauen.

# Export to Custom XML
$XMLEvent > "ESX-Event-Report.xml"
Disconnect-VIServer -Server $con -Confirm:$false

So kann man sehr schnell ein gut lesbares XML Export File erstellen. Wo man selber erweitern kann je nach Anforderung.
Hier noch das ganze PowerShell Script:

VMWare-PowerShell-101-003

VMWare-PowerShell-101-003

Gruss @all


Wie kann ich ein *.sql Script Ausführen am MySQL Server?

1

Wie kann ich ein *.sql Script Ausführen?

Script Ausführen mit dem Konto webuser und einer Passwort Eingabe:

mysql -u webuser -p < /Script/createDatabaseScript.sql

Oder angemeldet am MySQL Server mit dem Schlüsselwort SOURCE

mysql> SOURCE /Script/createDatabaseScript.sql

Hier ein kleines Tutorial.


Artikelnavigation