Menu:

Latest news:

20.Januar 2008
Der Geburtstag unserer Tochter Annika Sophie :o)

Dezember 2007
Wir sind umgezogen. Bilder der neuen Wohnung haben wir auch schon online gespielt.

Oktober und November 2007
Wir renovieren eine Wohnung im 3.Bezirk in Wien.

Juni 2007
Endlich! Ich habe eine neue Gitarre - eine Takamine EAN-40-CX. Lange hat's gedauert bis ich mich durchgerungen habe eine zu kaufen - und lange bis sie endlich gekommen is.

Christoph

Meine Themen:

Christophs Powershell Page

Nachdem aller Anfang schwer ist liefere ich hier einige Dinge für den Einstieg in die Mixrosoft Power Shell (vormals Monad). Die Sammlung der Scripts is willkürlich und im Laufe meiner Spielereien entstanden.

Profil erstellen

Im Profil können Einstellungen vorgenommen werden, die für jede Session gültig ist (Alias, Functions, Pfade, etc.). In der Umgebungsvariable $profile ist der Pfad zur Profil-Datei gespeichert. Um die Datei zu editieren (und gegebenenfalls vorher zu erstellen) einfach foldenen Befehl auf der msh ausführen:

> notepad $profile

Umgebungsvariablen? Path?

Eine Liste der Umgebungsvariablen listet man mit $env auf, eine bestimme Umgebungsvariable (z.B. den Pfad) mit $env:path. Um den Pfad zu erweitern, schreibt man z.B.:

> $env:path += ';C:\WindowsPowerShell'

Scripts ausführen

Damit man Scripts (.ps1) ausführen kann müssen die Rechte angepasst werden. Ich hab die Security ganz abgedreht:

> Set-ExecutionPolicy Unrestricted

Scripts im Explorer öffnen

Damit man .ps1 Scripts im Explorer per Doppelklick öffnen kann hier ein File zum Hinzufügen der richtigen Einträge in die Registry: (Download Powershell_Extension.reg). Das Schlüsselkommando dabei ist:

> C:\WINDOWS\system32\windowspowershell\v1.0\powershell.exe "&'%1' %*"

Open Powershell here

Ein praktisches REG-Script, dass im Explorer ein "Open Powershell here" im Folder-Kontextmenü anzeigt. (Download Open_Powershell_Here.reg)

Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Directory\shell\powershell]
@="Open Powershell Here"

[HKEY_CLASSES_ROOT\Directory\shell\powershell\command]
@="C:\\WINDOWS\\system32\\windowspowershell\\v1.0\\powershell.exe -noexit \"& {cd '%L'}\""

Erzeugen von ZIP-Files

Mit folgendem Script lassen sich per msh ZIP-Dateien erzeugen und "befüllen". (Download out-zip.ps1). Verwendet wird der neue "Befehl" z.B.:

$filename = 'Backup ' + (get-date).ToString("yyyyMMdd HHmm") + '.zip'
gi Dir1 | out-zip $filename
sleep 1
gi Dir2 | out-zip $filename
sleep 1
gi Dir3/SubDir | out-zip $filename
$filename + " sucessfully generated"

Mit sleep wird sichergestellt, dass die der Filezugriff auf das ZIP-File fertig ist bevor ein neuer Zugriff stattfinden (bei mir hat's geholfen). Hier sieht man auch schön, dass .NET Funktioninalitäten direkt verwendet werden können: get-date liefert ein System.DateTime Objekt zurück. Mit der ToString() Methode kann dann die Ausgabe formatiert werden.

Wo ist die "pause" Funktion hin?

Ich hab mir eine Funktion geschrieben die den entsprechenden .NET Befehl [System.Console]::ReadKey() > $null absetzt. Die Funktionsdeklaration (ab ins Profil damit, dann kann man auch wieder einfach pause schreiben) sieht so aus:

function pause {[System.Console]::ReadKey() > $null}

Mehr Infos auch auf der Wikipedia Seite zur Power Shell