Kategorieauswahl

Translator

Google +1

Bitte teilen Sie Google mit, wenn Ihnen diese Seite gefällt.

PowerShell Openbook kostenlos online

Hier entsteht mit Ihrer freundlichen Unterstützung ein Buch über PowerShell im OpenBook (OpenBook=kostenlos für jeden, durch Spenden finanziert) Format. D.h. jeder kann das Buch hier online lesen. Spender, die das Projekt mit min. 5,- € unterstützen erhalten Zugriff auf die Skripte und die aktuelle download PDF-Version, um diese für die eigene Verwendung auszudrucken. Anpassen der Inhalte oder die Weitergabe ist ohne Zustimmung des Autors untersagt. Spenden können Sie an:

Martin Lehmann,

Sparkasse Hanau:
IBAN: DE05506500230037144953
BIC: HELADEF1HAN

Verwendungszweck: PowerShell 123

Wenn Sie im Verwendungszweck Ihre E-Mail Adresse mit angeben, erhalten Sie einen Link zur PDF-Version und den Skripten aus dem Buch.

@Herr Rumel: Vielen Dank für Ihre Spende. Leider kann ich Ihnen die Zugangsdaten nicht mailen, da ich in der Überweisung die E-Mail-Adresse nicht identifizieren konnte.

Darüber hinaus freue ich mich natürlich über jede konstruktive Kritik und zusätzliche Themenvorschläge. Nicht zu jedem Punkt im Inhaltsverzeichnis gibt es auch bereits ein Kapitel, also bitte nicht wundern, das Buch ist ja noch nicht fertig. Wenn Sie sich zusätzliche Kapitel oder Problemlösungen wünschen, schreiben Sie doch einen Kommentar. Natürlich freue ich mich auch über ein „gefällt mir“ (aber nicht bei Facebook), oder sonstigen Ansporn. Nicht nur Geld motiviert Menschen ;-).

Aktueller Stand                         : 635,55 €

Nächste Veröffentlichung bei   : 650,- €

Ganz besonders herzlichen Dank an Fam. Schlauch, die als erste gewagt haben, das Projekt mit einer Spende zu unterstützen! Damit ist der Stein ins Rollen gebracht worden. Höchster Spendenbetrag einer Einzelperson ist bislang 60,-€. Auch dafür besonders herzlichen Dank.

Spender werden in der Danksagung des Buches namentlich aufgelistet, falls Sie nicht ausdrücklich widersprechen. Der jeweilige gespendete Betrag wird aber aus datenschutzrechtlichen Gründen nicht genannt.

In der hier veröffentlichten Version fehlen noch einige Kapitel. Die werde ich dann in weiteren Spendenschritten erstellen und veröffentlichen. Bei einem Gesamtspendenbeitrag von 650,- € wird auch der komplette Teil über PowerShell 5.0 online gestellt. Spender haben natürlich schon vorher Zugriff auf den jeweils aktuellen Stand.

Buch online lesen. (Sollten die Bilder oder der Link fehlen, verwenden Sie bitte den Internet-Explorer)

Erreichte Meilensteine:

Bei   50,- €: Überabreitung der Basisversion. Formatierungen, bessere Lesbarkeit.
Bei 200,- €: PowerShell 3.0
Bei 350,- €: GUI-Programmierung
Bei 400,- €: Active-Directory
Bei 450,- €: PowerShell 4.0
Bei 500,- €: Datenbankzugriffe
Bei 550,- €: Hyper-V

9 Antworten auf PowerShell Openbook kostenlos online

  • Draeger sagt:

    Hallo Hr. Lehmann,
    mir macht folgende Formulierung im PS-Buch Kopfzerbrechen, weil mich die Literalzeichen an dieser Stelle verwirren:
    Kapitel:2.3.8.4.2

    $multi=New-Object ‚object[,]‘ 10,10

    Könnten sie bitte dazu etwas sagen ?
    Gruß
    Dr.

    • admin sagt:

      object ist die Mutter aller .NET-Klassen. Daraus werden alle anderen Objekte/Typen abgeleitet. Eine Beschreibung dazu finden Sie unter: http://msdn.microsoft.com/de-de/library/system.object(v=vs.110).aspx
      Wie üblich, haben Sie auch hier die Möglichkeit beim Erstellen des Objekts mehrere Informationen zu übergeben. In diesem Fall wird in den eckigen Klammern das Trennzeichen für die einzelnen Elemente definiert (das Komma = ,). Weil in PowerShell eckige Klammer und auch Kommas Sonderzeichen sind, die entpsrechend interpretiert werden, muss der gesamte Ausdruck in Hochkomma gesetzt werden, um der PowerShell mitzuteilen, dass die eckigen Klammern und das Komma zur Instantiierung gehören und nicht durch PowerShell interpretiert werden sollen. Wie bereits erwähnt, spielen mehrdimensionale Arrays sowieso eine untergeordnete Rolle und sollte nur der Vollständigkeit halber erwähnt werden.

  • Anonymous sagt:

    Hallo Hr. Lehmann,
    meine Vorredner haben schon viel des Lobes gesagt – dem kann ich mich nur anschliessen. Wünschen würde ich mir in aller Bescheidenheit, dass Ihre Sätze etwas kürzer und dafür lesbarer ausfallen könnten, einfach um die Dinge leichter nachvollziehen zu können. Oder es liegt an dem Schriftbild der Website auf meinem Monitor…
    Mein Hauptinteresse liegt in der Windows-Administration- und Remoting.
    Danke für die tolle Arbeit, ich freue mich auf die Fortsetzung und habe soeben zum Fortgang etwas beigetragen …

    Gruß
    Aladin

  • chrisrowweber sagt:

    Hallo Herr Lehmann,

    den bisher veröffentlichten Stand Ihres Buches habe ich bereits teilweise zur Lösungsfindung bei einigen Herausforderungen verwendet und bin daher sehr begeistert. Ich werde mich entsprechend erkenntlich zeigen und Ihnen für Ihr Buch eine Spende zukommen lassen.

    Es gibt einen Punkt, der mich brennend interessiert (dieser ist in der aktuellen Fassung Ihres Buches nur als Headline erfasst) – vielleicht können Sie mir etwas auf die Sprünge helfen:

    Ich würde gern über ein via PowerShell erzeugtes Fenster Daten in ein dort befindliches Textfeld eingeben lassen. Dieses soll allerdings nicht einzeilig oder x-zeilig sein, sondern variabel. Wenn ich bspw. einen Text mit einer Länge von 147 Zeilen aus der Zwischenablage in dieses Textfeld hinein kopiere, möchte ich anschließend alle 147 Zeilen in eine Variable/Array einlesen.

    Hintergrund ist folgender: ich möchte für meine Kollegen gern eine benutzerfreundliche Eingabemaske bauen, um eine Liste beliebiger AD-Gruppen, -User oder -Computer einzulesen, die dann im Nachgang eine Excel-Tabelle oder .csv-Datei mit definierten Infos zu diesen Objekten auswirft. Bisher realisiere ich das Einlesen über eine sich im Editor-Fenster öffnende Textdatei, die nach dem manuellen Speichern ausgelesen wird – eine schreckliche Krücke… Alles, was nach dem Einlesen kommt, passt bereits 🙂

    Beste Grüße

    Christian Weber

    • admin sagt:

      Hallo Herr Weber,

      vielleicht hilft Ihnen so lange, der auf der Website gepostete Artikel zur GUI-Programmierung weiter:

      Lieben Gruß und herzlichen Dank für die Spende

      Martin Lehmann

      PS: Link zur neuesten Buchversion und den Skripten kommt spätestens am Wochenende per E-Mail

      • chrisrowweber sagt:

        Hallo,

        Hab mir die GUI-Erstellung angeschaut und mich kurzerhand durch die Textbox-Klasseneigenschaften gewühlt. Da gibt es doch tatsächlich etwas für Mehrzeiligkeit und Scrollbalken! Und nach Schließen des Fensters kann man sich den Inhalt der Textbox in eine Variable holen.
        Manchmal braucht man bloß einen kleinen Denkanstoß. – Danke!

  • Trautmann sagt:

    Hallo Herr Lehmann,
    vielen Dank für die schnelle Hilfe. Das ging ja schneller als die Polizei erlaubt.
    Ich bin total beeindruckt.
    Darauf kann man auf alle Fälle aufbauen:
    Eigentlich ist es gar nicht so schwer. Ich hätte nie gedacht, dass man die Objekte von einem zum anderen Fenster einfach so ansprechen kann.
    Ein bisschen erinnert mich das an uralte JavaScript-Programmierunge mit Frames. Nur musste man dabei die ganze Objekthierarchie mit aufrufen, um an der richtigen Stelle wieder rauszukommen.
    Wenn ich wieder mal eine Frage habe, weiß ich ja nun, wo ich diese stellen kann, bevor ich mir wieder mal eine Nacht um die Ohren schlage, weil es mir keine Ruhe lässt.
    Nochmals vielen Dank und ein schönes Wochenende!

  • Elke Trautmann sagt:

    Hallo Herr Lehmann,
    ich finde den Powershell GUI Programmierungs-Teil super hilfreich.
    Ich konnte die Beschreibung sehr gut nachvollziehen und bisher hat alles funktioniert, was ich in Abwandlung Ihrer Beispiele getestet habe.

    Ich benutze die PowerShell vorrangig für automatische Daten-Exporte aus der Datenbank unseres ERP-Systems (Sage New Classic) über den MySQL/Net-Connector. (Neben dem ODBC-Connector kam leider nur NET in Frage. Das hat zusätzlich den Vorteil, das keine Programmlizenz verbraucht wird.)

    Z.B. werden im 10-Minuten-Abstand Lieferschein-Daten für das UPS-System zur Verfügung gestellt.

    Da ich jahrelang HTML/PHP/MySQL – Programmierungen gemacht habe, kenne ich mich ganz gut mit Datenbankabfragen etc. aus. Die GUI Programmierung ist für mich völliges Neuland.

    Im Moment bin ich dabei, ein Service-Tool für die Mitarbeiter zu erstellen.
    Z.B. soll es möglich sein, dass sie bei nachträglichen Änderungen an Lieferscheinen, die Daten durch Einscannen der Lieferschein-Nummer noch einmal aufrufen können.
    Ihre Ausführungen zur GUI-Programmierung werden mir dabei sehr viel Arbeit ersparen. Ich danke Ihnen für diese Internetseiten.

    Ich habe übrigens sofort eine Spende auf das angegebene Konto überwiesen.
    Wäre schön, wenn Sie mir den Link zu Ihrem PDF-Buch zukommen lassen, sobald sie die Spende erhalten haben.

    Themen, die mich noch besonders interessieren sind Filesystem und Excel.
    Außerdem würde ich gern noch wissen, wie ich verschiedene GUI-Fenster miteinander kombinieren kann, so dass ich z.B. ein Hauptfenster öffne und darin befinden sich 2 oder mehrere Unter-Fenster. Ändert man in Fenster 1 eine Auswahl, hat das Auswirkung auf die Anzeige in Fenster 2 ( Ist sowas in dieser Art möglich?)

    Mit freundlichen Grüßen
    Elke Trautmann

    • admin sagt:

      Hallo Frau Trautmann,

      herzlichen Dank für Ihr Interesse und Ihre Unterstützung. Es freut mich Ihnen weitergeholfen zu haben. Tipps zu Excel finden Sie im Buch unter: http://www.martinlehmann.de/PowerShell123.htm#_Toc342721535
      und zum Filesystem: http://www.martinlehmann.de/PowerShell123.htm#_Toc342721529. Sollten da noch Fragen offen sein, stellen Sie die einfach so wie mit den 2 Fenstern. Die Lösung mit den zwei Fenstern könnte so aussehen:

      [void][reflection.assembly]::LoadWithPartialName(„System.Windows.Forms“)

      # Hauptfenster (Nr.1) erstellen
      $Fenster1 = new-object Windows.Forms.Form
      $Fenster1.Width = 220
      $Fenster1.Height = 160

      # Einen Beispieltext ins Hauptfenster hängen
      $TextF1 = New-Object Windows.Forms.Label
      $TextF1.Text = „Noch nichts ausgewählt“
      $TextF1.Left = 10
      $TextF1.Top = 10
      $TextF1.Width = 190
      $TextF1.Height = 20
      $Fenster1.Controls.Add($TextF1)

      # Ein Eingabefeld als weiteres Beispiel ins Hauptfenster hängen
      $Eingabefeld = New-Object System.Windows.Forms.TextBox
      $Eingabefeld.Left = 10
      $Eingabefeld.Top = 40
      $Eingabefeld.Width = 190
      $Eingabefeld.Height = 20
      $Eingabefeld.Text = „Noch nichts Eingegeben“
      $Fenster1.Controls.Add($Eingabefeld)

      # Ein Button zum schließen des Hauptfensters
      $CloseW1 = New-Object Windows.Forms.Button
      $CloseW1.Text = „Schließen“
      $CloseW1.Left = 10
      $CloseW1.Top = 100
      $CloseW1.Width = 90
      $CloseW1.Height = 20
      $CloseW1.Add_Click({
      $Fenster1.Close()
      })
      $Fenster1.Controls.Add($CloseW1)

      # Einen weiteren Button zum öffnen eines 2. Fensters ins Hauptfenster hängen
      $OpenW2 = New-Object Windows.Forms.Button
      $OpenW2.Text = „2. Fenster öffnen“
      $OpenW2.Left = 10
      $OpenW2.Top = 70
      $OpenW2.Width = 190
      $OpenW2.Height = 20
      $OpenW2.Add_Click({
      # Wenn der Knopf angeklickt wird ein zusätzliches Fenster (Nr. 2) erstellen
      $Fenster2=new-object Windows.Forms.Form
      $Fenster2.Text = „Auswahlfenster“
      $Fenster2.Width = 200
      $Fenster2.Height = 100

      # Close-Button ins Fenster2 hängen
      $CloseW2 = New-Object Windows.Forms.Button
      $CloseW2.Text = „Schließen“
      $CloseW2.Left = 10
      $CloseW2.Top = 40
      $CloseW2.Width = 90
      $CloseW2.Height = 20
      $CloseW2.Add_Click({
      $Fenster2.Close()
      })
      $Fenster2.Controls.Add($CloseW2)

      # Ja Knopf
      $OpenW2J = New-Object Windows.Forms.Button
      $OpenW2J.Text = „Ja“
      $OpenW2J.Left = 10
      $OpenW2J.Top = 10
      $OpenW2J.Width = 50
      $OpenW2J.Height = 20
      $OpenW2J.Add_Click({
      # Hier passiert die „magic“ – Anpassen der Inhalte aus dem Hauptfenster
      $TextF1.Text = „Ja angeklickt“
      $Eingabefeld.Text = „Ja angeklickt“
      })
      $Fenster2.Controls.Add($OpenW2J)

      # Nein Knopf
      $OpenW2N = New-Object Windows.Forms.Button
      $OpenW2N.Text = „Nein“
      $OpenW2N.Left = 70
      $OpenW2N.Top = 10
      $OpenW2N.Width = 50
      $OpenW2N.Height = 20
      $OpenW2N.Add_Click({
      # Hier passiert die „magic“ – Anpassen der Inhalte aus dem Hauptfenster
      $TextF1.Text = „Nein angeklickt“
      $Eingabefeld.Text = „Nein angeklickt“
      })
      $Fenster2.Controls.Add($OpenW2N)
      $Fenster2.ShowDialog()
      })
      $Fenster1.Controls.Add($OpenW2)
      $Fenster1.ShowDialog()

Anregungen und Kommentare erwünscht