PowerShell-Chat (#PowerShellKnowHow)

Ich habe heute einen IRC-Chat mit dem Namen #PowershellKnowHow registriert, in dem ich Fragen rund um die PowerShell beantworte (bzw. versuche eine Antwort zu geben;). Das Ganze ist in erster Linie ein Experiment. Man benötigt dazu einen IRC-Client, z.B. mIRC, verbindet sich mit einem IRC-Server (FreeNode) und betritt dann einen Channel, in diesem Fall besitzt er den Namen #PowerShellKnowHow. Ich werde natürlich nicht immer online sein, aber einen Versuch ist es wert (da ich in den nächsten Monaten an einem PowerShell-Buch arbeite bin ich für Fragen natürlich immer offen;). Vielleicht kann ich mit diesem nicht mehr ganz so neuem Medium ein paar kleinere “PowerShell-Aufgaben” lösen.

Es gibt bereits seit vielen Jahren einen Channel mit dem Namen #PowerShell von JayKul.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Mein Besuch auf dem PowerShell-Summit in Redmond vom 22. bis 24.4.2013

Jetzt komme ich endlich einmal dazu, einen kurzen “Reisebericht” zu meiner Teilnahme am PowerShell Summit 2013 zusammenzustellen, der vom 22. bis 24. April dieses Jahres in den USA stattfand. Und zwar nicht irgendwo in den USA, sondern direkt auf dem Microsoft Campus in Redmond (ganz in der Nähe der US-Metropole Seattle im Nordwesten der USA) in den Gebäuden 40 und 41, wo unter anderem auch das Visual Studio-Team zu Hause ist (eigentlich wäre es  zwar logischer gewesen jenes Gebäude zu wählen, in dem das PowerShell-Team beheimatet ist, die Nummer ist mir allerdings nicht bekannt, aber aus irgendeinem Grund schien das nicht möglich gewesen zu sein).

Organisiert wurde die Konferenz auch nicht von Microsoft, sondern von PowerShell-Guru Don Jones und seinen Mitstreitern, die zusammen auch das Community Portal powershell.org betreiben, neuerdings die Scripting Games 2013 durchführen und auch ansonsten in der PowerShell-Community recht umtriebig sind. Die Räumlichkeiten bei Microsoft wurden angemietet, was insofern sehr angenehm war, da das Catering vom Microsoft-Catering übernommen wurde und dadurch sehr gut (sprich für europäische/deutsche Essgewohnheiten bekömmlich) war. Die Anzahl der Teilnehmer war auf ca. 100 begrenzt (ich hatte mich bereits kurz nach der offiziellen Ankündigung angemeldet, allerdings offenbar bereits zu spät, um in den Genuss des üblichen “Frühbucherrabatts” zu kommen;). Eine Liste aller Teilnehmer gibt es hier:

http://powershellsummit.eventbrite.com/

Die Konferenz begann am Montagmorgen pünktlich um 9 Uhr mit einer kurzen Einführung durch Don Jones. Dann ging es in zwei Tracks weiter. Ein Track mit Developer-Themen, der zweite Track mit eher “bodenständigen” Themen. Ich saß zunächst (natürlich) im Developer-Track bis es mir am Nachmittag dort auch etwas zu speziell wurde und ich in den Anwender-Track (in Gebäude 41) wechselte.

Meine Vorträge am 1. Tag waren der Reihe nach:

>Abstract Syntax Trees (Adam Driscoll, früher Quest, jetzt Dell)

>Meta Programming PowerShell (Ian Davis, ein noch sehr junger und sehr guter Entwickler, u.a. bekannt durch die NInject-Bibliothek, mit Mac-Laptop, der nach eigener Aussage erst vor etwa 3 Monaten PowerShell gelernt hat).

>Binary Modules (Karl Prosser, bekannt durch seinen PowerShell Analyzer)

Mittagspause

>The Powers of PowerShell Pipeworks (James Brundage, der früher ein Mitglied des PowerShell-Teams bei Microsoft war – ich hatte James bereits auf dem PowerShell Deep Dive 2011 in Frankfurt getroffen und wusste daher, was mich erwartet;)

>Automated Builds with PowerShell (noch einmal Ian Davis)

Die Vorträge zum Thema Unit Testing und PowerShell Reverse Engineering mit .NET erschienen mir dann etwas zu speziell und ich wechselte in den Praxis-Track, in dem es gerade um das eher “bodenständige” Thema WMI-Events ging (Richard Siddaway). Danach gab es einen sehr guten Vortrag von Aleksandar Nikolic zum Thema Remoting-Session-Konfiguration.

Meine Vorträge am 2. Tag waren:

>Workflow Walkthrough (von Don Jones himself, elementar, aber sehr gut und verständlich)

>WinRM Drilldown (Narayana Mahankali und Irina Salvan, zwei Mitglieder des WinRM-Teams bei Microsoft, fachlich sehr speziell, aber grundlegend wichtig – zwischendrin ging der Beamer kaputt, was auch bei Microsoft passiert, so dass der Vortrag am Ende einfach aufhörte)

>GUI Toolmaking with PowerShell (David Coralles von Sapien. Ein Firmenvortrag. Es ging natürlich um die aktuelle Version von PowerShell Studio. Offenbar gibt es noch einige PowerShell-User, die das Tool nicht kennen). In der Mittagspause wurde die Vorführung noch einmal in dem anderen Raum wiederholt. Sapien war der einzige Hersteller, der so prominent vorgestellt wurde (allzu viele Alternativen gäbe es allerdings auch nicht in diesem Bereich)

>Doing Configuration Management using PowerShell (Bruce Payette, der Erfinder der PowerShell-Sprache und einer der Köpfe hinter der PowerShell. Auf alle Fälle eines der Highlights der Konferenz. Es gibt um deklaratives Konfigurationsmanagement. Für mich die Zukunft, da man es nicht jedem Admin zumuten kann eine Skript-/Programmiersprache zu erlernen, um Konfigurationsänderungen durchzuführen).

>Remoting Configuration Deep Dive (noch einmal Mr. Don Jones mit weiteren Details zum Thema PowerShell-Remoting. Eigentlich hätte der Vortrag von Aleksandar Nikolic vom Vortrag genügt).

>Management OData Schema Designer (Wojtek Kozaczynski, ein weiterer Microsoft-Mitarbeiter. Ob er zum PowerShell-Team oder zum “OData-Team” gehört kann ich leider nicht sagen, da er sich nur sehr kurz vorgestellt hatte und nach dem Vortrag gleich verschwunden war – wenn man bei Microsoft auf dem Campus arbeitet, kennt man die “Fluchtwege”;). Ein interessantes Thema, aber sehr speziell.

>How to Delegate Administration and Customize PowerShell Session Configuration (noch einmal Aleksandar Nikolic. Wichtiges Thema, wieder ein sehr guter Vortrag, der aus der Praxis kam).

Das war es dann mit dem zweiten Tag. Danach stand ein Besuch im Microsoft Company Store auf dem Programm. Ed Wilson hatte für alle Teilnehmer “Gutscheine” im Wert von 150 US$ organisiert. Bis zu diesem Betrag darf man im “Lagerverkauf” einkaufen. Ein Microsoft Office 2013 kostet dort z.B. nur 60 US$. Eine Microsoft Bluetooth-Tastatur nur 40 US$. Darüber hinaus gibt es jede Menge T-Shirts, Taschen, Kaffeetassen, Stifte und andere Gegenstände mit Microsoft-Logo. Den Laden darf jeder betreten, um in den Bereich zu kommen, in dem es die Microsoft Hard- und Software gibt, braucht man allerdings einen “Blue Badge” (einen Microsoft-Mitarbeiter) als Begleitung. Da wir zwei Gruppen waren und ich in der zweiten Gruppe war mussten wir eine Weile vor dem Gebäude warten bis Ed wieder herauskam. Microsoft ist auch Sponsor der Fussball Mannschaft von Seattle, den Seattle Sounders (mit dem Deutschen Trainer Sigi Schmidt). Ich war verblüfft wie hoch die Preise für Fanzubehör in den USA sind. Ein froschgrünes Adidas-Shirt mit Xbox 360-Logo kostet selbst nach Rabatt noch 120 US$.

Die vollständige Agenda des Summit gibt es hier:

http://powershell.org/wp/wp-content/uploads/2013/04/PowerShell-Summit-2013-Conference-Agenda-At-a-glance.pdf?bb7cbb

Update: Die wichtigste Kleinigkeit hatte ich beim ersten Posten natürlich vergessen, der Link auf die Seite, auf denen die einzelnen Vorträge zur Verfügung stehen:

http://powershell.org/wp/2013/04/22/summit-downloads/

Ein Abendprogramm gab es an den beiden Abenden leider nicht. Allerdings hatte “Scripting Wife” Theresa für den zweiten Abend in einem Restaurant im Redmond Town Center (etwa 5 Minuten mit dem Auto, wenn kein Feierabend-Verkehr herrscht, ansonsten 20 Minuten) ein paar Tische reserviert, so dass es dort mit ca. 20 Teilnehmern des Summit noch einmal richtig nett wurde.

Am dritten Tag, an dem ich aber nur noch morgens dabei war, da mein Rückflug am selben Tag ging (allerdings “erst” um 13 Uhr), gab es bis Mittags noch verschiedene Vorträge (June Blender, vielen bekannt als diejenige, die bislang für die PowerShell-Hilfe zuständig war, war leider nicht anwesend, da sie ein paar Wochen zuvor in das Windows Identity-Team gewechselt war).

Am Nachmittag fand ein Workshop statt, zu dem eine gesonderte Einladung erforderlich war. Die ANzahl der Plätze war entsprechend limitiert. In diesem Workshop sollte eine Anforderung aus der Praxis mit PowerShell, Workflows und anderen Tools wie den dem OData Schema Designer umgesetzt werden. Das Resultat sollte ein “gehosteter Service” sein (klingt jetzt etwas abstrakt, aber vielleicht finde ich irgendwo die genaue Beschreibung bzw. ein Teilnehmer hat etwas darüber gepostet).

Positiv war:

>Einige sehr interessante Vorträge auf hohem Niveau. Vor allem die Vorträge von Aleksandar Nikolic und natürlich der Ausblick von Bruce Payette auf deklaratives Konfigurationsmanagement.

>Verschiedene Leute einmal “live” kennen zulernen, wie Ed Wilson, “Scripting Wife Theresa”, Adam Driscoll usw. bzw. wiederzusehen (Aleksandar Nikolic, der das PowerShell Magazine macht, Jeffrey Snover und Bruce Payette, auch wenn es oft nur um ein “Hallo” sagen ging).

>Die wie immer interessante Atmosphäre auf dem Microsoft-Campus.

>Das über die drei Tage tolle Wetter (es war allerdings auch dort etwas kühl)

>Mein Hotel, das zu Fuß (!) nur ca. 5 Minuten vom Veranstaltungsort entfernt war.

Nicht ganz so positiv:

>Einige der “PowerShell-VIPs” geben sich schon etwas unnahbar. Natürlich kann man im “Amiland” immer jeden ansprechen und in ein Gespräch verwickeln, aber ansonsten hatte ich eher das Gefühl, dass die “PowerShell VIPs” ganz gerne unter sich blieben. Das war bei unserer PowerShell-Konferenz in Oberhausen zum Glück nicht der Fall.

>Es gab leider weder eine Abendveranstaltung, noch am Ende des Tages ein Q&A, bei dem man an allen Sprechern hätte Fragen stellen können.

>Auch wenn die Veranstaltung auf dem Microsoft Campus stattfand, waren die Mitglieder des PowerShell-Teams nur spärlich vertreten bzw. kamen lediglich zu ihren Vorträgen und waren danach wieder weg. Wer wer war musste man schon selber herausfinden. Ein Q&A mit Bruce Payette oder Jeffrey Snover wäre schon sehr interessant gewesen.

>Insgesamt kam der Community Charakter was kurz (wobei man auch anmerken muss, dass Powershell.org keinen Alleinvertretungsanspruch für die gesamte, weltweite PowerShell-Community hat)

>Die künftige Richtung der PowerShell war leider auch kein Thema. Ich hätte mir  zu mindestens ein paar Ausblicke gewünscht (eine Richtung, die Bruce Payette in seinem Vortrag angedeutet hatte war, dass “Metasprachen”, also beschreibende Sprachen für bestimmte Anwendungsdomänen in Zukunft eine etwas größere Rolle spielen werden – er ging ausführlich auf Puppet und Chef ein, die beide in der Unix-Welt eine größere Rolle spielen. Hier wird eine Konfigurationsänderung deklarativ und nicht “imperativ” durch eine Folge von Befehlen umgesetzt – ich denke, dass dieser Ansatz Potential hat). Ich habe heute eher per Zufall erfahren, dass das kommende “Windows 8.1″ eine “PowerShell 4″ mit einer Reihe neuer Cmdlets enthalten wird. Davon war auf dem Summit überhaupt keine Rede.

Nächstes Jahr soll der PowerShell Summit deutlich größer werden und in Downtown Bellevue im Medenbauer Conference Center stattfinden (ich war dort einmal als der Internet Explorer 4 vorgestellt wurde – das Polo-Shirt habe ich heute noch;).

Ich habe mich in meinem Bericht nur auf ein paar Infos beschränkt, auch wenn er dafür bereits recht umfangreich geworden ist. Wenn jemand weitere Fragen zu einzelnen Vorträgen hat, helfe ich gerne weiter.

Hier sind noch ein paar Bilder in wechselnder Qualität, die ich eher als “Stimmungsbilder” zur Verfügung stelle.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Die Scripting Games 2013 haben begonnen

Es geht los – wer an den Scripting Games teilnehmen möchte, kann sich jetzt registrieren:

http://scriptinggames.org

Wie im letzten Jahr gibt es zwei Kategorien: Beginners und Advanced. Eine der Preise ist eine Teilnahme am PowerShell Summit 2014, der nächstes Jahr erneut in Redmond stattfinden soll.

Wie es Don Jones, einer der Organisatoren, so schön sagte: Es geht nicht um gewinnen, sondern um lernen.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Die PowerShell-Konferenz 2013 ist vorbei

Vom 10. bis 11. April 2013 fand in Oberhausen (am Rande des Ruhrgebiets) die erste PowerShell-Konferenz in Deutschland statt, die von Tobias Weltner (PowerShell MVP) organisiert und mit Unterstützung von IT Visions durchgeführt wurde. Am 10.4 fand ein Einführungsworkshop, der von Tobias alleine durchgeführt wurde, statt. Die Konferenz war insgesamt gut besucht. Ich schätze, dass es ca. 60 Teilnehmer waren. Die Vorträge waren alle auf hohem Niveau und trotzdem auch für Teilnehmer geeignet, die gerade erst mit der PowerShell begonnen haben, da jeder Vortrag auch allgemeine Beispiele enthielt.  Wie ich es aus den  Gesprächen und den Fragen zu den einzelnen Vorträgen während der 3 Tage herausgehört habe, waren die meisten Teilnehmer aber erfahrene PowerShell-Anwender, die die PowerShell teilweise bereits seit der Version 1.0 kennen.

Auch der Veranstaltungsort, das Industriemuseum (http://www.industriemuseum.lvr.de/)  in Oberhausen hat mir sehr gut gefallen (wo kann man noch eine echte Dampflock sehen und anfassen?).

Ich war auf der PowerShell-Konferenz mit insgesamt acht Vorträgen vertreten (bis auf den Vortrag “GUI-Alternativen für PowerShell-Skripte, der 45 Minuten dauerte, dauerte jeder Vortrag nur 30 Minuten, was oft etwas kurz war), wobei ich meinen Vortrag “PowerShell und C#” aus Zeitgründen nicht mehr halten konnte. Schade. Nicht jeder , der die PowerShell kennt, dürfte wissen wie leicht sich in einem Skript aus C#-Code eine ausführbare Asssembly machen lässt, und dass sich per Add-Type-Cmdlet nicht nur Assemblies laden, sondern auch vorhandene Objekte um Members erweitern lassen, so dass die etwas “speziell” wirkenden Typkonfigurationsdateien ab der PowerShell 3.0 nicht mehr benötigt werden. Auch der Aufruf von API-Funktionen mit einem Callback wäre ein Thema gewesen  (ich werde meine Folien und die dazugehörigen Beispiele in Kürze an dieser Stelle zur Verfügung stellen).

Es hat mich auch gefreut, ein paar bekannte (oder bis dahin noch nicht bekannte) Gesichter zu sehen. Zum Beispiel Peter Kriegel (http://www.admin-source.de), der PowerShell-Bücher sammelt und mir eine Sprachreferenz zur PowerShell 2.0 und 3.0 geschenkt hat (sollte jeder ernsthafte PowerShell-Anwender im Regal stehen haben). Noch einmal vielen Dank, Peter.

Ein paar Bilder und Infos zur Konferenz gibt es auf der neuen PowerShell Community-Seite unter http://pscommunity.de

Auch 2014 soll es wieder eine PowerShell-Konferenz geben.

Nächste Woche steht der PowerShell Summit in Redmond auf dem Programm. Ich bin gespannt wurde werde natürlich in diesem Blog davon berichten.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

A nice replacement for the Console Window

There are several replacements for the good. old Console Window (that hasn’t changed since Windows NT 4 or may be even NT 3.51). One that makes a very good impression on me is Conemu-maximus5:

https://code.google.com/p/conemu-maximus5/downloads/list

It offers an easy and elegant way to run several consoles in a single window. I usually run several PowerShell consoles on my desktop and now I can switch between those consoles inside a single window. Very nice.

ConEnuMaximus5

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Am 25. April beginnen die PowerShell Scripting Games 2013

Auch dieses Jahr wird es wieder die PowerShell Scripting Games geben. Vor ein paar Tagen (?) hat PowerShell-Guru Don Jones die Details bekanntgegeben:

http://powershell.org/wp/2013/04/03/2013-scripting-games-schedule/

Scripting Games 2013

Scripting Games 2013

Ich kann nur jedem empfehlen an der (virtuellen) Veranstaltung teilzunehmen . Dazu muss man 10 vorbereitete Aufgaben auf einem von zwei Levels  (Anfänger und Profi) lösen und die Lösung einreichen, die anschließend von einer Jury mit Punkten bewertet wird. Zu gewinnen gibt es verschiedene Preise (mir fällt gerade ein, dass ich meinen Preis noch gar nicht erhalten habe;).

Der Zeitaufwand ist nicht gerade gering, an Ende wird es oft richtig anstrengend, denn die Profi-Aufgaben sind nicht trivial. Daher sollte man rechtzeitig beginnen.  Es lohnt sich, da man eine Menge über die PowerShell lernt und wann erhält man schon einmal die Gelegenheit, dass PowerShell-Experten die eigenen Skripte kommentieren.

Nachdem es letztes Jahr im Endspurt anscheinend etwas “chaotisch” wurde (die Jury hatte Mühe, die vielen Einsendungen noch termingerecht zu bearbeiten), wurde der Wettbewerb dieses Jahr offenbar etwas “professionalisiert”. Die beste Chancen auf eine objektive Bewertung und damit die volle Punktzahl hat man meiner Erfahrung nach, wenn man möglichst früh seine Aufgabe einreicht, da die Jury-Mitglieder dann vermutlich noch mehr Zeit haben oder sich mehr Zeit nehmen.

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Show-UI – Version 1.4

I am big fan of ShowUI – a module with > 400 functions that make using WPF controls as a GUI for PowerShell scripts very simple. I am amazed by the wealth and depth of WPF techniques that the authors combined into their module.

Since April 1st there is a new version 1.4 available:

https://showui.codeplex.com/releases/view/104592

The new version doesn’t offer any new functions but fixes a bug that occurs after loading the module under PowerShell 3.0 and Windows 8 (I posted a message in the ShowUI Forum and got an answer by Jaykul a couple of minutes later).

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar

Using PowerShell 3.0 to query a RavenDB store

RavenDB is nice and powerfull NoSQL database written in C#. It stores its documents (the equivalent of a table row) in JSON. It can be queried by a REST API with HTTP commands like GET, PUT, POST and DELETE. Instead of Curl PowerShell users can use the convenient new Invoke-WebRequest-Cmdlet.

Here is a small example for a query that queries a local RavenDB storage in a database ‘TestDB” in a doument with the id ‘Aktes/1′ on Port 8081:

[code language="PowerShell"]

Invoke-Webrequest -Uri http://localhost:8081/databases/TestDB/docs/Aktes/1 | `
Select-Object -ExpandProperty Content | ConvertFrom-Json | `
Select-Object -ExpandProperty Aktendokumente

[/code]

Thanks to the new ConvertFrom-Json-Cmdlet its very easy to turn the JSON-objects into real PowerShell objects.

Veröffentlicht unter Allgemein, Tipps | Hinterlasse einen Kommentar

Unpack Cab files with PowerShell

PowerShell help content is packed into compressed cab files. As far as I know there is no native cmdlet for unpacking cab files so a simple alternative is to use the Shell.Application COM component.

Here is a little function that copies the content of a cab file into a directory.

[code language="PowerShell"]

<#
.Synopsis
Unpack cab files
#>

function Copy-CabFiles
{
[CmdletBinding()]
param([Parameter(ValueFromPipeline=$true, Mandatory=$true)][String]$Path, [String]$Destination)
if (!(Test-Path -Path $Path))
{
Throw "Path $Path does not exists (sorry)"
}
$Shell = New-Object -ComObject Shell.Application
$CabFiles = $Shell.Namespace($Path).Items()
if ($Destination -eq "")
{ $Destination = (Get-Location).Path }
$DestinationFolder = $Shell.Namespace($Destination)
$DestinationFolder.CopyHere($CabFiles)
Write-Verbose "$($CabFiles.Count) files copied"
}

$CabFilePath = "C:\PsHelp\ActiveDirectory_43c15630-959c-49e4-a977-758c5cc93408_en-US_HelpContent.cab"

if (!(Test-Path -Path C:\PsHelpCab))
{ mkdir -Path C:\PsHelpCab }
Copy-CabFiles -Path $CabFilePath -Destination C:\PsHelpCab -Verbose

[/code]

Veröffentlicht unter Allgemein, Tipps | Hinterlasse einen Kommentar

PowerShell and Curl – Uploading/Downloading and deleting files with Ftp

There are probably a dozen ways to do Ftp with PowerShell. One of them is using the command line utility Curl:

http://curl.haxx.se/download.html

Here are a few examples about how to combine Curl with PowerShell by using Start-Process (after appending the curl directory path to $Env:Path):

a) List all files from the current Directory

[code language="Powershell"]

# List files
Start-Process -FilePath Curl -ArgumentList "$ServerName --user $UserName`:$Password" -RedirectStandardError C:\CurlError.txt `
-RedirectStandardOutput C:\CurlOutput.txt -Wait
Get-Content -Path C:\CurlOutput.txt
[/code]

b) Upload a file

[code language="Powershell"]
Start-Process curl -ArgumentList "$ServerName -s --user $UserName`:$Password -T C:\Windows\System.ini" -NoNewWindow
[/code]

c) Download a file

[code language="Powershell"]
Start-Process -FilePath Curl -ArgumentList "$ServerName/Impressum.html --user $UserName`:$Password -o Impressum.html"
[/code]

d) Delete a file (onWindows Curl seems to doesn’t like single quotes)

[code language="Powershell"]
Start-Process curl -ArgumentList "$ServerName/System.ini -S --user $UserName`:$Password -Q `"-DELE System.ini`"" -RedirectStandardError C:\CurlError.txt -RedirectStandardOutput C:\CurlOutput.txt
[/code]

Veröffentlicht unter Allgemein | Hinterlasse einen Kommentar