Windows PowerShell Community http://www.powershell-group.eu deutschsprachige PowerShell Gemeinschaft Mon, 23 Jan 2017 14:59:05 +0000 de-DE hourly 1 http://wordpress.org/?v=4.1.15 Export-CSV mit multidimensionalen (multivalue) Daten, auch für Microsoft Excel http://www.powershell-group.eu/export-csv-multivalue-daten-excel/ http://www.powershell-group.eu/export-csv-multivalue-daten-excel/#comments Thu, 29 Jan 2015 18:27:17 +0000 http://www.powershell-group.eu/?p=5595 Wenn man mit Export-CSV arbeitet, sollte man sich mit dem Grundlagen des CSV Format auskennen.
Das CSV Format ist eigentlich eine Tabelle, die nur 2 Dimensionen hat, um Daten in Zellen darzustellen.
Spalten und Zeilen (oder auch X,Y).
In den Internet-Foren kommt immer wieder die Frage auf, wie man Daten mit noch mehr Dimensionen in CSV exportieren kann.… weiterlesen...

]]>
Wenn man mit Export-CSV arbeitet, sollte man sich mit dem Grundlagen des CSV Format auskennen.
Das CSV Format ist eigentlich eine Tabelle, die nur 2 Dimensionen hat, um Daten in Zellen darzustellen.
Spalten und Zeilen (oder auch X,Y).
In den Internet-Foren kommt immer wieder die Frage auf, wie man Daten mit noch mehr Dimensionen in CSV exportieren kann.
Ich zeige hier, wie man diese multidimensionalen Daten in die 2 Dimensionen von CSV bringt.
(ich nenne das „flach klopfen von Daten“ ;-) )..

Das CSV Format

Das Dateiformat CSV steht für Englisch: Comma-Separated Values.
Die Regeln zu Erstellung einer CSV Datei werden im RFC 4180 von der Internet Engineering Task Force (IETF) beschrieben.
Siehe: http://tools.ietf.org/html/rfc4180
Siehe Wikipedia: http://de.wikipedia.org/wiki/CSV_%28Dateiformat%29

Der Text in einer CSV Datei muss den Regeln aus dem RFC 4180 entsprechen.

Man kann sich eine CSV Datei wie eine Excel Tabelle mit Überschriften für jede Spalte in der ersten Zeile vorstellen.

Export-CSV Excel Tabelle

Der im Bild gezeigten Excel Tabelle liegen folgende CSV Daten zugrunde:

Vorname;Nachname;UserID;Auftrag
Peter;Maffay;PetMaffa;Add
Sabine;Lisicki;SabLisic;Remove
Claudia;Schiffer;ClauSchi;Add
Herrman;Hesse;HerrHess;Add
Walter;Moers;WaltMoer;Remove

Hier passt es wunderbar, die Daten sind 2 Dimensional und es gibt für jede Zeilen- + Spalten Kombination nur einen Wert (pro Zelle). Die Daten haben eine 1:1 Beziehung zu den Zellen.

Diese Aussage gilt auch für die folgende Ausgabe von Services mit dem Cmdlet Get-Service:

Get-Service | Select-Object Name,Status,DisplayName |
Export-Csv -NoTypeInformation -Path 'E:\temp\Export-CSV-Multivalue1a.csv' -UseCulture
# CSV mit Excel öffnen (wenn Excel vorhanden)
Invoke-Expression 'E:\temp\Export-CSV-Multivalue1a.csv

Der Code erzeugt die im folgenden Bild gezeigten CSV Datei, als Microsoft Excel Tabelle:

Export-CSV Excel Tabelle

Jeder Service ist ein einzelnes Objekt.
Objekte haben in der Regel mehrere Eigenschaften (Englisch: Property) die Daten enthalten.
Der Wert von den Daten kann über den Property-Namen aus einem Objekt mit Hilfe des Punkt Operators als Pfadangabe ausgelesen oder gesetzt werden.
Objekt.Name = Wert.
Bei dem Cmdlet Select-Objekt gibt man einfach nur die Namen von den Properties an, dessen Werte man von einem Objekt haben möchte.
Alle Objekte von einem bestimmten Typ (hier Service Objekte) sind gleich aufgebaut und haben deshalb einen gemeinsamen Satz an Eigenschaften.
Der Spaltenname in einer CSV Tabelle entspricht dem Namen der Eigenschaft von einem Property des Objektes.
Von jedem Objekt wird über die Pipeline von Select-Object zu Export-CSV eine Daten-Zeile erstellt. Man kann auch sagen, dass jedes Objekt auch eine Zeile ist.
Import-CSV macht beim Einlesen von CSV Dateien aus jeder Zeile wieder ein Objekt.

Delimiter ; Export-CSV und Microsoft Excel

Für das Zeichen, das die einzelnen Datenspalten voneinander trennt, ist das Komma vorgesehen.
Deshalb heißt das Dateiformat auch Comma Separated Values.
Da in Deutschland das Komma als Dezimaltrennzeichen genutzt wird, wird in deutschen CSV Dateien häufig das Semikolon als Trennzeichen (Englisch: delimiter) benutzt.
Wenn das Trennzeichen bei dem Cmdlet Export-CSV nicht das Komma sein soll, muss das Trennzeichen mit dem Parameter –Delimiter angegeben werden oder man benutzt den Parameter -UseCulture.

Der Parameter -UseCulture von dem Cmdlet Export-CSV liest die Einstellungen für das Trennzeichen aus der Windows Kultureinstellung aus.
Das Trennzeichen der aktuell eingestellten Windows Kultur kann man mit folgendem Befehl abfragen:

(Get-Culture).TextInfo.ListSeparator

Auch Microsoft Excel beachtet die Kultureinstellung und nutzt auf einem Windows mit deutscher Kultureinstellung das Semikolon als Trennzeichen!

Wenn auf einem deutschen System die CSV Datei mit Microsoft Excel bequem geöffnet werden soll, muss man den Parameter -UseCulture benutzen oder man benutzt den Parameter -Delimiter mit dem Semikolon!
Dann kann man auch in Windows PowerShell eine CSV ganz bequem über Invoke-Expression oder besser über den Ausführungsoperator & mit Excel öffnen.

Invoke-Expression 'E:\temp\Export-CSV-Multivalue3.csv'
# oder besser
& 'E:\temp\Export-CSV-Multivalue3.csv'

 3 Dimensionale Daten

Was ist aber, wenn eine Person nicht nur eine Telefonnummer hat oder mehrere E-Mail Adressen?
Dann gehen die Daten in die 3. Dimension und ein Attribut besitzt mehr als einen Wert. Die Daten haben eine 1:n Beziehung.

Ein naiver Ansatz, der oft gedacht wird, ist es, z:B. einfach für jede zusätzliche Telefonnummer eine neue Spalte aufzumachen (siehe Bild).

Export-CSV Excel Tabelle

Der im Bild gezeigten Excel Tabelle liegen folgende CSV Daten zugrunde:

Vorname;Nachname;UserID;Auftrag;Telefon1;Telefon2;Telefon3;Telefon4
Peter;Maffay;PetMaffa;Add;12345;67890;46367834;
Sabine;Lisicki;SabLisic;Remove;23345;;;
Claudia;Schiffer;ClauSchi;Add;6787;345345;;
Herrman;Hesse;HerrHess;Add;3454;;;
Walter;Moers;WaltMoer;Remove;34534;34534;5454;6786789

Eigenschaften, die eine Liste enthalten (multivalues oder Arrays)

Wenn man solche Daten in Excel oder CSV exportieren will, muss man den Ansatz des mehrwertigen Feldes verfolgen (Englisch: multivalue field).
Ein Feld oder in Excel eine Zelle enthält also selbst wieder eine Liste (ein Array) von Werten.

Bei der Ausgabe von PowerShell Objekten erkennt man Properties, die eine Array von Werten (Objekten) enthalten, an den geschweiften Klammern {}.
Wenn man Get-Service in Kombination mit Select-Object * benutzt, dann sieht man, dass die Properties ‚RequiredServices ‘, ‚DependentServices‘ und ‚ServicesDependedOn‘, jeweils
ein Array mit vielen Werten sind ( multivalued):

Get-Service -Name 'WwanSvc' | Select-Object *

Ergebnis:

Name                : WwanSvc
RequiredServices    : {NlaSvc, RpcSs, NdisUio, PlugPlay}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
DisplayName         : WWAN – automatische Konfiguration
DependentServices   : {}
MachineName         : .
ServiceName         : WwanSvc
ServicesDependedOn  : {NlaSvc, RpcSs, NdisUio, PlugPlay}
ServiceHandle       :
Status              : Stopped
ServiceType         : Win32ShareProcess
Site                :
Container           :

Auch im Active Directory gibt es sehr viele Attribute / Eigenschften (Englisch: properties), die ein Array mit mehreren Werte enthalten, also multivalue Attribute sind.

3 Dimensionale Daten in die 2. Dimension zwingen

Im Fall von der zuvor gezeigten Personen Liste heißt das, dass alle Telefonnummern von einem Personen Objekt in eine Spalte geschrieben werden. Hier benutzt man innerhalb der Zelle wieder ein Trennzeichen, das sich am besten von dem CSV Trennzeichen (Englisch delimiter) unterscheidet. Ich benutze hier das Komma als Trennzeichen der einzelnen Werte innerhalb der Zelle.

Export-CSV Excel Tabelle

Der im Bild gezeigten Excel Tabelle, liegen folgende CSV Daten zugrunde:

Vorname;Nachname;UserID;Auftrag;Telefon
Peter;Maffay;PetMaffa;Add;12345,6789,46367834
Sabine;Lisicki;SabLisic;Remove;23345
Claudia;Schiffer;ClauSchi;Add;6787,345345
Herrman;Hesse;HerrHess;Add;3454
Walter;Moers;WaltMoer;Remove;34534,3453399999,5454,6786789

Hier sieht man, dass sich der delimiter der einzelnen Werte innerhalb der Zelle von dem CSV delimiter unterscheiden MUSS, damit das CSV Format gültig bleibt.

3 Dimensionale Daten in die 2. Dimension zwingen mit Windows PowerShell

Um solche 3 Dimensionalen Daten mit der Windows PowerShell und dem Cmdlet Export-CSV auszugeben, ist meist etwas mehr Aufwand nötig.
Da das Cmdlet Export-CSV am liebsten Objekte verarbeitet, muss man sich dazu eventuell komplett neue Objekte zusammen bauen. Dies erledigt hier Select-Object in Verbindung mit einer berechneten Eigenschaft (Englisch: calculated property).

Get-Service |
    Select-Object Name,Status,
    <# Das Array in dem Property 'RequiredServices' wird mit ForEach vereinzelt und mit -Join wird das Trennzeichen für das Array angegben #>
    @{Name='RequiredServices';Expression={($_.RequiredServices | ForEach-Object {$_.Name}) -join ','}} |
        Export-Csv -NoTypeInformation -Path 'E:\temp\Export-CSV-Multivalue3.csv' -UseCulture

# CSV mit Excel öffnen (wenn Excel vorhanden)
Invoke-Expression 'E:\temp\Export-CSV-Multivalue3.csv'

Der Code erzeugt die im folgenden Bild gezeigten CSV Datei als Microsoft Excel Tabelle:

Export-CSV Excel Tabelle

Ich hoffe, dass ich mit diesem Artikel etwas Klarheit über das Cmdlet Export-CSV in Verbindung mit Microsoft Excel und multivalue (Array) Properties bringen konnte.

Auch hier gilt:
LESEN SIE DIE KOMPLETTE DOKUMNETATION ZU DEM CMDLET EXPORT-CSV! RTFM ;-)

Get-Help Export-CSV –Full

Oder
https://technet.microsoft.com/en-us/library/hh849932.aspx

Verwenden des Cmdlet “Export-Csv”
https://technet.microsoft.com/de-de/library/ee176825.aspx

]]>
http://www.powershell-group.eu/export-csv-multivalue-daten-excel/feed/ 0
Helft der Windows PowerShell Community Konferenz http://www.powershell-group.eu/windows-powershell-community-konferenz-hilfe/ http://www.powershell-group.eu/windows-powershell-community-konferenz-hilfe/#comments Wed, 14 Jan 2015 07:14:12 +0000 http://www.powershell-group.eu/?p=5539 Die PowerShell Community Konferenz hat kein Marketing-Budget, denn die Teilnahmekosten sollen so niedrig wie möglich sein.
Ich als Sprecher auf der Windows PowerShell Community Konferenz, unterstütze deshalb jede kostenlose Werbemaßnahme.

Jeder von euch kann helfen, die Konferenz bekannter zu machen.
Das ist ganz einfach.… weiterlesen...

]]>
Die PowerShell Community Konferenz hat kein Marketing-Budget, denn die Teilnahmekosten sollen so niedrig wie möglich sein.
Ich als Sprecher auf der Windows PowerShell Community Konferenz, unterstütze deshalb jede kostenlose Werbemaßnahme.

Jeder von euch kann helfen, die Konferenz bekannter zu machen.
Das ist ganz einfach. Fügt das hier gezeigte Banner und/oder den Text in eure Email Signatur mit folgendem Link ein:
(Der kleine Text unter dem Banner, gehört zu dem Banner)

Link: http://www.powershell.de/konferenz

Windows PowerShell Community Konferenz 2015
Ich finde dieses Community-Event unterstützenswert! Sie auch? Dann fügen Sie den Link zur Konferenz auch in Ihre Email Signatur ein!

 

Das Banner könnt Ihr, in den meisten Browsern, mit der rechten Maustaste anklicken und Grafik/Bild speichern unter … auswählen, um es auf eure Festplatte zu speichern.
Danach könnt ihr es in eurem Emailprogramm in die Signatur einfügen.

Oder als reiner Text:

PowerShell Community Konferenz 2015 22.-23.04.2015
Essen / Ruhrgebiet
Jetzt Anmelden >> http://www.powershell.de/konferenz
Ich finde dieses Community-Event unterstützenswert! Sie auch? Dann fügen Sie den Link zur Konferenz auch in Ihre Email Signatur ein!

 

Wenn Ihr die Konferenz unterstützt wäre das super, und wenn viele mitmachen, ein echter Gewinn und virales Marketing.

Im Voraus jetzt schon vielen Dank für die Unterstützung.

Peter Kriegel

]]>
http://www.powershell-group.eu/windows-powershell-community-konferenz-hilfe/feed/ 0
Wir wünsche eine weisse Weihnacht und schönes Jahr 2015 http://www.powershell-group.eu/weihnacht-schoenes-2015/ http://www.powershell-group.eu/weihnacht-schoenes-2015/#comments Thu, 25 Dec 2014 13:11:37 +0000 http://www.powershell-group.eu/?p=5520 Wir wünschen euch allen ein Frohe (weisse) Weihnachtszeit, Gesundheit und Glück in Jahr 2015.
Eure PowerShell Usergroup Hannover PUGH-DE und die deutschsprachige Windows PowerShell Community.

Im Letzen Jahr haben wir ein Weihnachtsbaum Script gepostet.
http://www.powershell-group.eu/weihnachtsbaum-powershell/

Dieses Jahr wünschen wir uns Schnee, bei diesen Temperaturen.… weiterlesen...

]]>
Wir wünschen euch allen ein Frohe (weisse) Weihnachtszeit, Gesundheit und Glück in Jahr 2015.
Eure PowerShell Usergroup Hannover PUGH-DE und die deutschsprachige Windows PowerShell Community.

Im Letzen Jahr haben wir ein Weihnachtsbaum Script gepostet.
http://www.powershell-group.eu/weihnachtsbaum-powershell/

Dieses Jahr wünschen wir uns Schnee, bei diesen Temperaturen. ;-)

Ich habe im Microsoft Script Center ein PowerShell Script von einem User mit dem Namen “sgrinker” gefunden, damit Ihr euch eine weisse Wehnacht machen könnt:
https://gallery.technet.microsoft.com/scriptcenter/PowerShell-Snow-63c631ae
Diese Script ist nun etwas modifiziert und nun schneit es in der Windows PowerShell für uns.

Windows PowerShell Snow

Windows PowerShell Snow

Hier das Windows PowerShell Schnee (Snow) Script. Es funktioniert nur in der PowerShell Konsole! Speichert es als Script und Probiert es aus.

function Get-CharFromConsolePosition {
# funktion to get the character of a position in the console buffer
    param(
        [int]$X,
        [int]$Y
    )
      $r = New-Object System.Management.Automation.Host.Rectangle $x,$y,$x,$y
      $host.UI.RawUI.GetBufferContents($r)[0,0]
}

$SnowMan = @"
                            _
                         __{_}_
                       .'______'-.
                     _:-'      `'-:
                _   /   _______    `\
             .-' \  \.-'       `'--./
           .'  \  \ /  () ___ ()    \
           \ \\\#  ||    (___)      |  We wish you a merry and white Christmas
            \  #\\_||   '.___.'     |  from the German speaking
             \___|\  \_________.--./    Windows PowerShell Community 
                  \\ |         \   \--.  HTTP://www.PowerShell-Group.eu
                   \\/_________/   /   `\       ,
                   .\\        /`--;`-.   `-.__.'/
                  / _\\   ,_.'   _/ \ \        /
                 |    `\   \   /`    | '.___.-'
                  \____/\   '--\____/
                 /      \\           \
                |        \\           |
                |         \\          |
                |          \\         |
                \           \\        /
                 '.___..-.__.\\__.__.'
"@

Clear-Host

# Set position to the bottom of the window to draw the Snowman
$Host.UI.RawUI.CursorPosition = @{  
    x=0 
    y=$Host.UI.RawUI.WindowSize.Height
}

# Draw  Snowman
$SnowMan

# Calculate console Window stuff
$WinSize = $Host.UI.RawUI.WindowSize 
$BGColor = $Host.UI.RawUI.BackgroundColor  
$CurrPos = $Host.UI.RawUI.CursorPosition 

# Calculate Bottom and Top Row 
If ($Host.UI.RawUI.CursorPosition.Y -gt $Host.UI.RawUI.WindowSize.Height) 
{ 
    $Top = $CurrPos.Y - $Host.UI.RawUI.WindowSize.Height + 1 
    $Bottom = $CurrPos.Y 
} else { 
    $Top = 1 
    $Bottom = $WinSize.Height 
}
 
# Set maximum of Snowflakes to Show 
$MaxFlakes = 25

# Set the amount of colums to draw to 
$ColumnCount = $WinSize.Width
 
# create empty hashtable to hold the columns 
$Columns = @{}
 
# Create column coordinates foreach column 
0..$ColumnCount | ForEach-Object { $Columns.Add($_,$Bottom)}  

# Empty hashtable to hold each snowflake
$Flakes = @{}
# Startnumber for the unique number used as snowflake key in the $Flakes hash
$FlakeCount = 0 
 
# endless loop to let it snow 
While($True) 
{ 
    # leave endless loop on any keypress
    If ($Host.UI.RawUI.KeyAvailable) { break } 
     
    # Add new flakes randomly distributed on the top row to 
    If ((Get-Random $True,$False) -and ($Flakes.Count -lt $MaxFlakes)) 
    { 
        # generate unique number used as key for a snowflake in the $Flakes hash
        ++$FlakeCount
        # Add snowflake to hashtable each Snowflake gets an Hashtable with its X,Y coordinates
        # X is th random column number of the SnowFlake and Y is the top Row to start folling down    
        $Flakes.Add($FlakeCount,@{X=(Get-Random -min 0 -max $ColumnCount);Y=$Top})  
    }
     
    # Create empty Array to hold the Snowflake numbers to remove from the $Flakes hashtable later
    $Remove = @()
    
    # Process each snowflake in the $Flakes Hashtable
    ForEach ($Flake in $Flakes.Keys)
    { 
        # Prevent overwrite of non snowflakes on this position
        If((Get-CharFromConsolePosition $Flakes.$Flake.X  $Flakes.$Flake.Y).Character -eq '*') {
            
            # overwrite (delete) snowflake with background color
            $host.UI.RawUI.ForegroundColor = $BGColor 
            $Host.UI.RawUI.CursorPosition = @{  
              x=$Flakes.$Flake.X 
              y=$Flakes.$Flake.Y 
            }  
            Write-Host "*" -NoNewline 
            Start-Sleep -Milliseconds 1
        }     
        
        # add row to shift the snowflake one row down
        $Flakes.$Flake.Y += 1

        # Set new position and color for snowflake 
        $host.UI.RawUI.ForegroundColor = "white"  
        $Host.UI.RawUI.CursorPosition = @{  
          x=$Flakes.$Flake.X 
          y=$Flakes.$Flake.Y 
        }  
        # Prevent overwrite of non snowflakes
        $CurrChar = (Get-CharFromConsolePosition $Flakes.$Flake.X  $Flakes.$Flake.Y).Character
        If((($CurrChar -eq '*') -or ($CurrChar -eq '') -or ($CurrChar -eq ' '))) {
            # Draw snowflake on new position 
            Write-Host "*" -NoNewline 
        }   
 
        # calculate the botom row to keep the snowflakes on the ground
        If ($Flakes.$Flake.Y -ge ($Columns.($Flakes.$Flake.X)-1)) 
        { 
            --$Columns.($Flakes.$Flake.X) 
            $Remove += $Flake       
        } 
    } 
 
     # remove snowflakes from Hashtable that reached the bottom
     # so they will stay as a snow cover
     ForEach ($Item in $Remove) 
     { 
         $Flakes.Remove($Item) 
     } 
} 
 
# set cursor 
$Host.UI.RawUI.CursorPosition = @{  
          x=$CurrPos.X 
          y=$CurrPos.Y 
        }

 

]]>
http://www.powershell-group.eu/weihnacht-schoenes-2015/feed/ 0
Umfrage zu den Themen für die 3. Windows PowerShell Community Konferenz 2015 http://www.powershell-group.eu/umfrage-themen-powershell-community-konferenz-2015/ http://www.powershell-group.eu/umfrage-themen-powershell-community-konferenz-2015/#comments Mon, 03 Nov 2014 14:31:49 +0000 http://www.powershell-group.eu/?p=5390 Wie ich schon in einem Blog Artikel berichtet habe, laufen die Vorbereitungen zur 3. Windows PowerShell Community Konferenz am 21.-23.4.2015 in Essen/Ruhrgebiet auf Hochtouren.

Die Veranstalter Dr. Tobias Weltner und Dr. Holger Schwichtenberg, möchten in einer Vorabstimmung wissen welche Themen euch am brennendsten Interessieren.… weiterlesen...

]]>
Wie ich schon in einem Blog Artikel berichtet habe, laufen die Vorbereitungen zur 3. Windows PowerShell Community Konferenz am 21.-23.4.2015 in Essen/Ruhrgebiet auf Hochtouren.

Die Veranstalter Dr. Tobias Weltner und Dr. Holger Schwichtenberg, möchten in einer Vorabstimmung wissen welche Themen euch am brennendsten Interessieren.

In dieser ersten Umfrage, mit Freitexten, möchten wir ein ungefärbtes Bild über eure Interessen bekommen.
Danach wählen wir daraus die Themen aus und lassen diese wieder Voten.
Aktuell sollt Ihr also frei und unbeeinflusst schreiben, was Ihr ganz persönlich sehen wollt.

Hier geht es zur Umfrage:

Themen Umfrage PowerShell Konferenz 2015

Themen Umfrage PowerShell Konferenz 2015

]]>
http://www.powershell-group.eu/umfrage-themen-powershell-community-konferenz-2015/feed/ 0
Windows PowerShell Passwort oder Credentials abspeichern, aber richtig! http://www.powershell-group.eu/windows-powershell-passwort-oder-credentials-abspeichern/ http://www.powershell-group.eu/windows-powershell-passwort-oder-credentials-abspeichern/#comments Tue, 28 Oct 2014 18:00:08 +0000 http://www.powershell-group.eu/?p=5377 Fast jeder Administrator kennt die Situation, dass ein User für eine Aufgabe Administrative Berechtigung benötigt, er aber nicht als Administrator eingerichtet werden soll.

Mir sind 4 Möglichkeiten bekannt, um einem User ein Script zur Verfügung zu stellen, das mit Administrativen Berechtigungen läuft.… weiterlesen...

]]>
Fast jeder Administrator kennt die Situation, dass ein User für eine Aufgabe Administrative Berechtigung benötigt, er aber nicht als Administrator eingerichtet werden soll.

Mir sind 4 Möglichkeiten bekannt, um einem User ein Script zur Verfügung zu stellen, das mit Administrativen Berechtigungen läuft.
1. Man speichert in einem Windows PowerShell Script das Passwort und den Usernamen (die Credentials) eines Administrativen Accounts und diese werden im Script benutzt.
2.  Man benutzt die Windows Aufgabenplanung (Task-Scheduleder) um ein PowerShell Script mit anderen Credentials zu starten (ausführen bei Bedarf zulassen).
3. Ab der PowerShell 3.0 kann man einen Remoting-Endpoint einrichten in dem Credentials hinterlegt sind, der dann ein RunAs ausführt.
4. Ab der Windows PowerShell 5.0 gibt es in den Desired State Configuration die Ressource ” Just Enough Administration ” (JEA). Diese Arbeitet ebenfalls mit den Remoting-Endpoints.

Ich zeige in diesem Video die erste Variante, wie man mit der Windows PowerShell ein verschlüsseltes Passwort in einer Textdatei abspeichern kann.
Es gibt viele Beispiele im Internet wie man mit der Windows PowerShell ein Passwort abspeichern kann.
Leider wird dort oft die falsche Vorgehensweise gezeigt.
Wenn man mit der Windows PowerShell ein Passwort abspeichert, so kann meist nur der User der das Passwort mit PowerShell abgespeichert hat diese auch wieder abrufen.

Was sind Windows PowerShell Credentials und wie speichert man dies ab, so dass ein anderer User diese auch benutzen kann.
Dies ist ein Vortrag den ich auf der 2. deutschen PowerShell Konferenz gehalten habe.
http://youtu.be/-ptnU0dgzFo

Den PowerShell sourcecode zum abspeichern der Passwortes und die Präsentationen findet Ihr hier als Download

]]>
http://www.powershell-group.eu/windows-powershell-passwort-oder-credentials-abspeichern/feed/ 0
Microsoft Windows PowerShell Modul Versions-Wirrwarr entwirrt http://www.powershell-group.eu/microsoft-windows-powershell-modul-versionen/ http://www.powershell-group.eu/microsoft-windows-powershell-modul-versionen/#comments Fri, 24 Oct 2014 13:15:01 +0000 http://www.powershell-group.eu/?p=5372 Windows PowerShell kann durch so genannte Snapins oder durch Module, in der Funktionalität mit zusätzlichen Befehlen oder Providern erweitert werden.

Windows PowerShell Module

Dazu stellt Microsoft selbst, viele Module zur Verfügung.
Einige werden mit der Windows PowerShell selbst ausgeliefert und andere werden erst bei der Installation von Windows Features nachinstalliert.… weiterlesen...

]]>
Windows PowerShell kann durch so genannte Snapins oder durch Module, in der Funktionalität mit zusätzlichen Befehlen oder Providern erweitert werden.

Windows PowerShell Module

Dazu stellt Microsoft selbst, viele Module zur Verfügung.
Einige werden mit der Windows PowerShell selbst ausgeliefert und andere werden erst bei der Installation von Windows Features nachinstalliert. Es gibt auch Module die von der Version des Windows Betriebssystems abhängig sind.

Man kann auch Module oder Snapins von Drittanbieter Installieren. Dies ist aber nicht Gegenstand dieses Artikels. Dazu habe ich einen eigenen Artikel geschrieben.
Siehe hier: Windows PowerShell Module finden
http://www.powershell-group.eu/windows-powershell-module-finden/

Exkursion, Snapins:
Snapins sind eine veraltete Technik um die Windows PowerShell zu erweitern.
Snapins haben den Nachteilhaben, dass Sie mit Administrationsrechten Installiert werden müssen um sich in der Registry zu registrieren.
Deshalb sollte niemand mehr Snapins herstellen, sondern man sollte Module herstellen, die auch ein User durch einfaches Kopieren ‚Installieren‘ und nutzen kann.

Deshalb spreche ich im Folgenden nur allgemein von Modulen.

Ob ein Modul oder ein Snapin verfügbar ist, hängt von verschiedenen Faktoren ab.
Bei den Microsoft Modulen sieht man in der TechNet Dokumentation zu einem Modul, in welcher PowerShell Version oder in welchem Betriebssystem ein Modul vorhanden ist.
Leider habe ich keine Tabelle gefunden, die einen Überblick über alle Windows PowerShell Module von Microsoft gibt.

Microsoft legt fest, zu welcher Technik ein Modul gehört.

Microsoft Windows PowerShell Core Module

Die so genannten PowerShell-Core Module, sind an die Windows PowerShell gebunden und werden mit dieser ausgeliefert. Diese werden auch mit dem Windows Management Framework (WMF) installiert.
Eine Liste von den PowerShell-Core Modulen findet man z.B. hier:
Module Reference for Windows PowerShell version 4
http://technet.microsoft.com/en-us/library/hh847741.aspx

Die Tabelle die man dort findet, sagt leider nichts darüber aus, mit welcher Windows PowerShell Version ein Modul eingeführt wurde.
Das Core Modul „Microsoft.PowerShell.Core“ gibt es schon seit der Windows PowerShell Version 1.0. Dieses Modul wird jedoch immer mit der Windows PowerShell weiter entwickelt und hat nun den neuesten Stand von der PowerShell 4.0 und in Zukunft von der PowerShell 5.0 und so weiter.
Das Modul PSScheduledJob hingegen, wurde erst mit der Windows PowerShell Version 3.0 eingeführt.

Die PowerShell-Core Module sind also auch abhängig von der Installierten PowerShell Version!

Microsoft Windows Betriebssystem Module

Einige Module sind abhängig von der Version des Betriebssystems und sind deshalb keine PowerShell-Core Module. Diese Module gehören dann zum Windows Betriebssystem.
Das Modul zur Verwaltung von Windows Scheduled Task (Aufgabenplanung) z.B. ist erst ab den Betriebssystemen Windows 8.1 und Server 2012 R2 verfügbar.
Diese Module werden aus Technischen- oder Marketinggründen, meistens nicht für frühere Betriebssysteme nachträglich angeboten (kein downlevel support).

Feature oder Technik gebundene Microsoft PowerShell Module

Einige Module machen überhaupt erst mit einer bestimmten vorhandenen Technik Sinn.
Als Beispiele seien da die folgenden Module genannt:
ActiveDirectory für die Verwaltung des Active Directories, das SQLPS Modul um  den SQL Server zu verwalten.
Das Exchange Team z.B.  war einer der ersten, die ein Windows PowerShell Snapin extra zum Verwalten von Exchange entwickelt haben.

Microsoft hat mit der Common Engineering Criteria (CEC) eine Vorschrift, welche Features alle Server Teams in Ihre Produkte einbauen müssen.
Die Windows PowerShell steht in der CEC.
Somit haben auch SharePoint, Lync und viele andere Microsoft Server Produkte ihre eigenen Windows PowerShell Module.
Für CEC siehe: http://www.microsoft.com/cec/en/us/default.aspx

Diese Module sind meistens nur auf den Servern verfügbar, auf denen die entsprechende Technik installiert ist.
Deshalb kann man die PowerShell Module für diese Techniken meistens auch nur auf diesen Servern verwenden.

Möchte man diese (Server-) Module auch von einem Windows Clientbetriebssystem  aus benutzen, so kann man diese oft durch eine Technik benutzen die sich Implicit Remoting nennt.
Einen sehr guten Artikel über diese implizite Remoting hat Don Jones im TechNet Magazine veröffentlicht.
Windows PowerShell: Implicit Remoting
http://technet.microsoft.com/en-us/magazine/ff720181.aspx

Andere Techniken wie z.B. das ActiveDirectory Modul, kann man auch auf Windows Clients installieren.
Hierzu muss man die Remoteserver-Verwaltungstools (RSAT) Installieren und zusätzlich in der Windows Software Verwaltung als Feature Aktivieren.

Um z.B. Exchange von einem Windows Client aus zu verwalten kann man die Exchange-Verwaltungstools installieren oder man Verwaltet den Exchange Server über das Windows Remoting.
Auch hier gibt es ein historisch gewachsenes Versions-Wirrwarr, das ich nicht kenne, weil ich kein Exchange verwalte.

]]>
http://www.powershell-group.eu/microsoft-windows-powershell-modul-versionen/feed/ 0
3. Windows PowerShell Community Konferenz 2015 21.-23.04.2015 in Essen/Ruhrgebiet http://www.powershell-group.eu/windows-powershell-konferenz-2015/ http://www.powershell-group.eu/windows-powershell-konferenz-2015/#comments Tue, 14 Oct 2014 15:31:26 +0000 http://www.powershell-group.eu/?p=5324 Es laufen die Vorbereitungen zur 3. Windows PowerShell Community Konferenz 2015 am 21.-23.4.2015 in Essen/Ruhrgebiet.

Die 2. Windows PowerShell Community Konferenz im Mai 2014 war ein voller Erfolg.
Die Teilnehmer waren sehr begeistert.

Windows PowerShell Konferenz 2014

Windows PowerShell Konferenz 2014

Geballtes Wissen in deutscher Sprache zur Windows PowerShell

Auch bei der 3.… weiterlesen...

]]>
Es laufen die Vorbereitungen zur 3. Windows PowerShell Community Konferenz 2015 am 21.-23.4.2015 in Essen/Ruhrgebiet.

Die 2. Windows PowerShell Community Konferenz im Mai 2014 war ein voller Erfolg.
Die Teilnehmer waren sehr begeistert.

Windows PowerShell Konferenz 2014

Windows PowerShell Konferenz 2014

Geballtes Wissen in deutscher Sprache zur Windows PowerShell

Auch bei der 3. Windows PowerShell Community Konferenz gibt es drei Tage geballtes Wissen in deutscher Sprache zur Windows PowerShell, mit PowerShell-Top-Experten wie Dr. Tobias Weltner, Dr. Holger Schwichtenberg und Peter Monadjemi und Peter Kriegel..

Persönliche Vernetzung mit anderen Windows PowerShell Geeks

Dies ist wiedermal eine gute Möglichkeit sich persönlich kennen zu lernen und in den direkten Austausch zu gehen.
Das sollte man sich nicht entgehen lassen!
Plant schon mal eure Anwesenheit ;-)

Termin

Der Termin 21.-23.4.2015 steht nun Fest und die ersten „early Birds“ können sich schon
auf http://www.PowerShell.de Anmelden.

Hier kann man alle 3 Tage mit Windows PowerShell Workshop und Konferenz buchen.
Wenn man sein Windows PowerShell wissen nicht vorher nicht auffrischen möchte, bucht man nur die 2 Tage Konferenz.

Ort

Der Veranstaltungsort steht noch nicht fest, aber wir versuchen die Philharmonie Essen zu bekommen.
Da wird alleine der Veranstaltungsort zu einem Highlight!

Deshalb müssen wir unbedingt mehr als 100 Teilnehmer bekommen!
Bitte macht Ordentlich Werbung für diese Veranstaltung.
Wie auch im Letzen Jahr, mit der Comedy-Künstlerin, werden wir für uns etwas Unterhaltendens einfallen lassen.

Agenda

Am ersten Tag dem 21.04.2015 gibt es wieder einen Hands-On-Workshop, für alle die noch nicht mit Windows PowerShell gearbeitet haben oder die Ihr Windows PowerShell wissen auffrischen wollen.
Die Dozenten Dr. Holger Schwichtenberg oder Dr. Tobias Weltner gehen sehr Flexibel mit Ihrem Vorwissen um und passen den Level des Workshops dementsprechend an.

Für die beiden Konferenz Tage am 22.-23.04.2015 arbeiten wir noch an den Themen. Diese werden wir sobald als möglich veröffentlichen.
Eines kann ich schon versprechen, es werden wieder viele Themen aus der Praxis dabei sein und es werden einige neue Dinge aus der Brandneuen PowerShell Version 5.0 vorgestellt.

Kommt alle!

Macht Werbung auf all euren Kanälen dafür, weil:

  • diese Konferenz wirklich Kostengünstig ist,
  • dies Konferenz wirklich Spaß macht und etwas bring,
  • und diese Konferenz ist von der Community für die Community!

Anmeldung zur 3. Windows PowerShell Community Konferenz 2015 21.-23.04.2015 in Essen/Ruhrgebiet
auf http://www.PowerShell.de

]]>
http://www.powershell-group.eu/windows-powershell-konferenz-2015/feed/ 1
ZIP Kompression mit der PowerShell; eine Übersicht. http://www.powershell-group.eu/zip-kompression-powershell/ http://www.powershell-group.eu/zip-kompression-powershell/#comments Tue, 26 Aug 2014 14:35:49 +0000 http://www.powershell-group.eu/?p=5209 Die Windows PowerShell hat leider keine Cmdlets um Dateien zu Komprimieren.
Ich stelle hier eine Übersicht über die Möglichkeiten zusammen, wie man mit der Windows PowerShell ZIP-Dateien erstellt.
Zuerst erwähne ich Möglichkeiten wie man ohne zusätzliche Hilfsmittel auskommt.
Zum Schluss zeige ich noch Möglichkeiten auf wie man die Windows PowerShell und 7-ZIP oder andere zusätzlichen DLLs (.dll) nutzen kann.… weiterlesen...

]]>
Die Windows PowerShell hat leider keine Cmdlets um Dateien zu Komprimieren.
Ich stelle hier eine Übersicht über die Möglichkeiten zusammen, wie man mit der Windows PowerShell ZIP-Dateien erstellt.
Zuerst erwähne ich Möglichkeiten wie man ohne zusätzliche Hilfsmittel auskommt.
Zum Schluss zeige ich noch Möglichkeiten auf wie man die Windows PowerShell und 7-ZIP oder andere zusätzlichen DLLs (.dll) nutzen kann.

Das ZIP-Dateiformat

Das ZIP-Dateiformat (von englisch zipper ‚Reißverschluss‘) ist ein Standard um die Menge digitaler Daten von Dateien aus dem Dateisystem zu reduzieren.
ZIP reduziert die Menge digitaler Daten von einer Datei durch einen standardisierten Datenkompressionsalgorithmus (Datenkomprimierung).

Das ZIP-Dateiformat reduziert durch die Kompression den Platzbedarf von Dateien und wird deshalb auch benutzt um Dateien zu Archivieren.
Durch die reduziert Menge digitaler Daten werden Dateiübertragungen verkürzt und dadurch Kostengünstiger.
Das ZIP-Dateiformat fungiert auch als Containerdatei, in der mehrere zusammengehörige Dateien oder auch ganze Verzeichnisbäume zusammengefasst werden können. Dies wird meist als ZIP-Paket bezeichnet, da dadurch ganze Verzeichnisbäume in einer Datei verschickt werden können.
Die Dateiendung für ZIP-Dateien ist .zip. Der MIME-Typ ist application/zip.

Die Wörter „komprimieren“, „zippen“ oder „packen“ werden als Synonym für das zusammenstellen von Dateien in eine ZIP-Datei verwendet.

Siehe Wikipedia ZIP-Dateiformat: http://de.wikipedia.org/wiki/ZIP-Dateiformat

ZIP Kompression mit der PowerShell

Es ist nicht einfach mit der PowerShell Dateien oder ganze Ordner mit dem ZIP Algorithmus zu einem Paket zu Komprimieren.
Ich bin immer ein großer Fan davon, ohne dritt Anbieter Tools und nur mit Windows Bordmitteln, eine Aufgabe zu erledigen. Doch dies ist in diesem fall nicht so einfach.

ZIP Kompression mit der PowerShell 2.0

Bei den Bordmitteln ist man mit der  Windows PowerShell 2.0 noch etwas eingeschränkter, da die Windows PowerShell 2.0 nur die .NET Frameworks 2.0 bis 3.5 nutzen kann.

Hier kann man z.B. das COM Objekt „Shell.Application“ von dem Windows Datei-Explorer benutzen.
Oder man kann die .NET Klasse System.IO.Packaging.ZipPackage aus der WindowsBase Assembly (.dll) nutzen.

Oder man nutzt ein vorhandenes Packprogramm wie z.B.
7-ZIP (oder die 7z.dll davon) oder eine andere Library (.dll) die ZIP-Funktionen bietet wie z.B. die SharpZipLib.dll von http://www.icsharpcode.net/OpenSource/SharpZipLib/

ZIP Kompression mit der PowerShell 3.0 und folgend

Die PowerShell 3.0 und folgend bietet alle Möglichkeiten der PowerShell 2.0.

Ab der Windows PowerShell 3.0 kann man das .NET Framework 4.0 und 4.5 benutzen.

Der Namensraum „System.IO.Compression“ vom .NET  Framework 4.5 enthält nun neue Klassen zum erstellen von ZIP Komprimierten Paket-Dateien.

ZIP Kompression mit der PowerShell 4.0

Seit der PowerShell 4.0 kann man die „Archive“ Rescource der  Desired State Configuration (DSC) zur Arbeit mit ZIP-Dateien benutzen.

ZIP Kompression mit der PowerShell 5.0

Die PowerShell 5.0 bekommt nun endlich eigenen Cmdlets um ZIP-Dateien zu erstellen
Die Cmdlets heissen in der Aktuellen Preview Version:

  • Compress-Archive
  • Expand-Archive

Boe Prox hat einen Blog Post zur Benutzung von diesen ZIP-Cmdlets geschrieben:
More New Stuff in PowerShell V5: Expand and Compress Archive Cmdlets
http://learn-powershell.net/2014/08/23/more-new-stuff-in-powershell-v5-expand-and-compress-archive-cmdlets/

Das COM Objekt Shell.Application

Wie man „Shell.Application“ COM Objekt benutzt habe ich in meinem Artikel PowerShell ZIP ohne Module oder externe Programme http://www.admin-source.de/BlogDeu/450/powershell-zip-ohne-module-oder-externe-programme beschrieben.
Leider unterstützt das „Shell.Application“ COM Objekt keine Kommunikation mit der Windows PowerShell, sodass die Windows PowerShell nicht weiß wann ein Kompressionsvorgang abgeschlossen ist.
Diese asynchronität wirft viele (unlösbare) Probleme auf.
Ebenso kann man hier nicht so leicht Verzeichnisbäume in einem ZIP Paket erstellen, dies ist schwer zu handhaben.
Deshalb kann ich diese Methode nicht Empfehlen und rate dazu dies nur im Notfall zu benutzen.

Die .NET Klasse System.IO.Packaging.ZipPackage

Die .NET Klasse System.IO.Packaging.ZipPackage aus der WindowsBase Assembly (.dll), setzt das .NET Framework 3.5 voraus.
Diese Klasse ist eigentlich dazu gedacht Microsoft Office Dokument (.docx, .xlsx, pptx usw.) zu erstellen.
Deshalb erstellt diese Klasse keine „sauberen“ .zip Dateien.
Die Vorgehensweise wie man mit dieser .NET Klasse .zip Dateien erstellt kann man in den folgenden Blog Posts nachlesen:

PowerShell–Zip
http://thewalkingdev.blogspot.de/2012/07/powershellzip.html

Easy archiving of files using PowerShell
http://www.winsoft.se/2010/12/easy-archiving-of-files-using-powershell/

oder hier auf Stackoverflow:
http://stackoverflow.com/a/12978117/1165195

Auch diese Klasse hat ihre Nachteile. Sie erzeugt z.B. ungewollte Bestandteile (eine [Content_Types].xml Datei) in dem ZIP-Paket.
Auch hier muss man Verzeichnisbäume in einem ZIP Paket selbst  erstellen und verwalten, dies ist ebenfalls schwer zu handhaben. Wie man Verzeichnisse innerhalb dieser ZIP-Date verwaltet, macht habe ich in meiner Beschreibung zum .xlsx Format erklärt (englisch):
http://gallery.technet.microsoft.com/scriptcenter/Export-XLSX-PowerShell-f2f0c035

Man kann über Reflection die privaten Methoden der Klassen benutzen um saubere ZIP-Dateien zu erstellen.
C# Use Zip Archives without External Libraries
http://www.codeproject.com/Articles/209731/Csharp-use-Zip-archives-without-external-libraries

Auch diese Vorgehensweise ist eher ein Notnagel.

Der .NET Namensraum „System.IO.Compression“ in der Windows PowerShell

Ab PowerShell 3.0 kann man das .NET Framework 4.5 nutzen, das den Namensraum „System.IO.Compression“ enthält. Dieser Namensraum stellt neue Klassen zum erstellen von ZIP Komprimierten Paket-Dateien bereit.

Folgend hier ein Beispiel, wie man sehr leicht mit der Klasse System.IO.Compression.ZipFile einen ganzen Ordner in eine ZIP-Datei einpacken kann.

# load assembly
Add-Type -AssemblyName System.IO.Compression.FileSystem

$SourceFolder = 'D:\TEMP'
$Target = 'C:\TEMP\backup.zip'

$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal

# compress complete folder to ZIP file
[System.IO.Compression.ZipFile]::CreateFromDirectory($SourceFolder, $Target, $compressionLevel, $True)

Joel Bennett hat mit dem .NET 4.5 Namensraum „System.IO.Compression“ und den darin enthaltenen .NET Klassen 2 Windows PowerShell Script-Cmdlets entwickelt. Die man auf Poshcode herunterladen kann.
ZipFile Module by Joel Bennett
http://poshcode.org/4198

Alexey Miasoedov hat diese 2 Script-Cmdlets weiterentwickelt. Den Code dazu kann man sich hier herunterladen.
Manage Zip archives with PowerShell by Alexey Miasoedov
http://purple-screen.com/?p=440

Windows PowerShell und 7-ZIP

Um mit 7-ZIP ZIP-Dateien zu erstellen muss 7-ZIP auf dem Rechner vorher Installiert werden oder man benötigt die 7z.dll. Dieser vermeidliche Nachteil bringt viele Vorteile mit sich. Mit 7-ZIP ist es wesentlich leichter Verzeichnisbäume zu verarbeiten, vorhandene .zip Dateien zu Aktualisieren (Update) oder die Integrität einer ZIP-Datei zu überprüfen. Ebenso kann 7-ZIP auch andere Kompressionsformate entpacken.

Auf DotnetPerls findet man Beispiele (Examples) zur Benutzung von 7z.exe mit Kommandozeilen-Parametern.
7z.exe Examples: http://www.dotnetperls.com/7-zip-examples

Hinweis:
Bei der Nutzung von 7-ZIP kommt ein Windows PowerShell 2.0 Bug zum Vorschein.
Kommandos die, wie 7-Zip.exe, mit einer Nummer beginnen, müssen mit dem Call Operator & aufgerufen werden. Hier sollte man die Hinweise aus dem Artikel „Mehrere Arten mit der PowerShell ein externes Programm zu starten“ http://www.admin-source.de/BlogDeu/791/mehrere-arten-mit-der-powershell-ein-externes-programm-zu-starten beherzigen.
Ab PowerShell 3.0 tritt dieser Bug nicht mehr auf!

Folgend ein Beispielaufruf von 7z.exe mit der PowerShell, um alle Dateien und Ordner von „D:\temp“ in die in eine ZIP-Datei zu mit dem Namen „D:\temp\backup.zip“ zu verpacken.

$Source = 'D:\TEMP'
$Target = 'D:\TEMP\backup.zip'

& "$env:ProgramFiles\7-Zip\7z.exe" @('a','-mx=9',$Target,$Source)

Das steuern der 7z.exe hat den Nachteil das die Aktionsmeldungen (Error, Erfolg, Fortschritt) von 7z.exe als Text an PowerShell übergeben werden.
Um auch hier echte Objekte und mehr Kontrolle zu bekommen, gibt es ein Projekt das „SevenZipSharp“ heißt und die 7z.dll von 7-ZIP auch für .NET nutzbar macht.
https://sevenzipsharp.codeplex.com/

Thomas Freudenberg zeigt in einem Blog-Post wie man SevenZipSharp mit Windows PowerShell nutzt um ZIP-Dateien zu bearbeiten:
http://thomasfreudenberg.com/blog/archive/2013/04/07/7-zip-for-powershell.aspx

Das sehr gute Windows PowerShell Modul „PowerShell Community Extensions“ (PSCX) bietet ZIP Cmdlets die intern die auch SevenZipSharp  und 7z.dll von 7-ZIP benutzen.

Das PSCX Modul gibt es für die PowerShell 2.0 (.NET 2.0 -3.5) und für die PowerShell 3.0 (.NET 4.0)
Download PSCX Modul: https://pscx.codeplex.com/

Windows PowerShell und SharpZipLib

Hier benötigt man die SharpZipLib von http://www.icsharpcode.net/OpenSource/SharpZipLib/

Lee Holmes hat ein Beispiel geposted wie man die SharpZipLib mit der PowerShell nutzen kann um ZIP-Dateien zu bearbeiten:
http://poshcode.org/2202

Ein weiteres Beispiel mit Windows PowerShell und der SharpZipLib findet man hier:
PowerShell SharpZipLib Script
http://blog.expressionsoftware.com/2009/11/powershell-sharpziplib-script.html

Anmerkung:
Eine Nutzung von den .NET Framework 4.0 und 4.5 mit Windows PowerShell 2.0  ist auch Möglich, verursacht aber wieder andere Probleme und wird von Microsoft nicht unterstützt.
Siehe:
https://connect.microsoft.com/PowerShell/feedback/details/525435/net-4-0-assemblies-and-powershell-v2
und
http://stackoverflow.com/questions/2094694/how-can-i-run-powershell-with-the-net-4-runtime/5069146#5069146

Mein Fazit

Wenn man keine zusätzlichen Tools benutzen kann und PowerShell 2.0 abwärtskompatibel bleiben will, sollte man sich mit der .NET Klasse System.IO.Packaging.ZipPackage näher beschäftigen. Das .NET Framework 3.5 vorausgesetzt!

Muss man viel mit Dateibäumen arbeiten oder man legt wert auf eine Integritätsprüfung, so empfehle ich den Umgang mit einer der 7-ZIP Derivate.

 

]]>
http://www.powershell-group.eu/zip-kompression-powershell/feed/ 1
Windows PowerShell verbessern von Leistung und Effizienz http://www.powershell-group.eu/powershell-leistung-und-effizienz/ http://www.powershell-group.eu/powershell-leistung-und-effizienz/#comments Wed, 13 Aug 2014 12:57:49 +0000 http://www.powershell-group.eu/?p=5199 Man kann mit mit wenigen Umstellungen im Windows PowerShell Code noch einiges an Geschwindigkeit herausholen.
Man kann auch seine Windows PowerShell Skripte effizienzenter gestalten, indem man auf den Ressourcenverbrauch wie z.B. den Speicherverbrauch achtet.

Ich zeige in diesem Video, Tipps und Tricks wie man seine PowerShell Scripts und Kommandos schneller machen kann.… weiterlesen...

]]>
Man kann mit mit wenigen Umstellungen im Windows PowerShell Code noch einiges an Geschwindigkeit herausholen.
Man kann auch seine Windows PowerShell Skripte effizienzenter gestalten, indem man auf den Ressourcenverbrauch wie z.B. den Speicherverbrauch achtet.

Ich zeige in diesem Video, Tipps und Tricks wie man seine PowerShell Scripts und Kommandos schneller machen kann.
Ebenso wird gezeigt wie man mit der Windows PowerShell den Speicher effizient nutzt.

Dies ist das Video von meinm Vortrag vom 7. Treffen der Powershell Usergroup Hannover (PSUG-H-DE).

Windows PowerShell Script Effizienz


Wie immer kann die Präsentation und der Sourcecode hier heruntergeladen werden:
http://www.powershell-group.eu/wp-content/uploads/2014/08/PowerShell_Performance.zip

]]>
http://www.powershell-group.eu/powershell-leistung-und-effizienz/feed/ 0
ISERegex – Powershell ISE Addon http://www.powershell-group.eu/iseregex-powershell-ise-addon/ http://www.powershell-group.eu/iseregex-powershell-ise-addon/#comments Fri, 08 Aug 2014 14:50:41 +0000 http://www.powershell-group.eu/?p=5176 Hallo Zusammen,

nachdem Tobias letztens erwähnte das WPF und co gar nicht so schwer ist, habe ich einfach mal angefangen selber ein Add-On für die ISE zu schreiben.
Das Add-On soll die Arbeit mit regulären Ausdrücken ein wenig erleichtern. Ich würde mich freuen wenn ihr es Twittert und im besten Fall im Technet bewertet :)

Momentan (Version 0.2) sind folgende Features enthalten:

Regex reference

– click to insert to editor
– right click context menu to open MSDN web help

Regex libary

– Access to over 3000!… weiterlesen...

]]>
Hallo Zusammen,

nachdem Tobias letztens erwähnte das WPF und co gar nicht so schwer ist, habe ich einfach mal angefangen selber ein Add-On für die ISE zu schreiben.
Das Add-On soll die Arbeit mit regulären Ausdrücken ein wenig erleichtern. Ich würde mich freuen wenn ihr es Twittert und im besten Fall im Technet bewertet :)

Momentan (Version 0.2) sind folgende Features enthalten:

Regex reference

– click to insert to editor
– right click context menu to open MSDN web help

Regex libary

– Access to over 3000! regex patterns from http://regexlib.com
– Paste pattern to editor as variable
– Paste pattern only
– Test pattern  in regex tester

Regex tester

– Test pattern in the Add-on

Den Link zum Download findet ihr auf meinen privaten Blog: http://nt-guys.com/iseregex-powershell-ise-addon/

Gruß und ein angenehmes Wochenende ;)

Kamil

]]>
http://www.powershell-group.eu/iseregex-powershell-ise-addon/feed/ 0