26
COPY-AND- PASTE DESIRED STATE CONFIGURATION PACKAGE- MANAGEMENT CONVERT- FROM NETWORK- SWITCH GET- CHILDITEM PowerShell 5.0: Die wichtigsten Cmdlets und Module Mit Windows 10 und Windows Server 2016 vollzieht auch die PowerShell einen neuen Versionssprung. Dieses E-Handbook zeigt Windows-Admins die wichtigsten neuen Features der PowerShell 5.0. COPYRIGHT: MELPOMENE - FOTOLIA

PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

Embed Size (px)

Citation preview

Page 1: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

COPY-AND- PASTE

DESIRED STATE CONFIGURATION

PACKAGE- MANAGEMENT

CONVERT- FROM

NETWORK- SWITCH

GET- CHILDITEM

PowerShell 5.0: Die wichtigsten Cmdlets und ModuleMit Windows 10 und Windows Server 2016 vollzieht auch die PowerShell einen neuen Versionssprung. Dieses E-Handbook zeigt Windows-Admins die wichtigsten neuen Features der PowerShell 5.0.

COP

YRIG

HT: M

ELPO

MENE

- FO

TOLIA

Page 2: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE2

EDITORIAL

Die PowerShell geht in die nächste Runde

Beim Start der ersten PowerShell-Version, die vor inzwischen zehn Jahren mit Windows XP und Windows Server 2003 ausgeliefert wurde, war wohl noch nicht absehbar, welch großer Erfolg Microsofts .NET-basierter Skript-Sprache bevorstehen würde.

Mit jeder neuen Version hat Microsoft den Funktionsumfang kontinuierlich erweitert, was mit der PowerShell 2.0 das PowerShell Remoting und Module, mit der PowerShell 3.0 das Job Scheduling und mit der PowerShell 4.0 schließlich die Desired State Configuration einführte. Mit Windows 10 und Windows Server 2016 steht nun die nächste PowerShell-Version bereit, die ähnlich viele neue Funktionen bringt, wie seinerzeit das Update auf PowerShell 4.0.

Dieses E-Handbook setzt gewisse Grund-kenntnisse im Umgang mit der PowerShell voraus und zeigt geübten Anwendern, welche neuen Cmdlets, Module und Funktionen die PowerShell 5.0 enthält. Der erste Artikel gibt einen kurzen

Überblick über die Neuerungen beim Remote-Editieren und bei der Desired State Configuration (DSC), während der zweiten Artikel einen tieferen Blick auf die Desired State Configuration in der PowerShell 5.0 wirft.

Im dritten Artikel gehen wir anschließend genauer auf die neue Paketverwaltung mithilfe des PackageManagement-Frameworks ein, bevor im vierten und fünften Artikel das Parsen unstrukturierter Daten-Strings sowie die Konfiguration von Netzwerk-Switches

Beim Start der ersten PowerShell-Version war wohl noch nicht absehbar, welch großer Erfolg Microsofts .NET-basierter Skript-Sprache bevorstehen würde.

Page 3: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE3

EDITORIAL

vorgestellt werden – für beide Szenarien bietet die PowerShell 5.0 willkommene Neuerungen.

Der sechste und letzte Artikel geht abschließend auf einige kleinere Neuerungen ein, die vielen Windows-Admins weniger bekannt sein dürften.

Während das Update auf die PowerShell 4.0 vielen als Meilenstein in der Entwicklung der PowerShell gilt, dürfte auch die neue Version 5 aufgrund der sorgfältigen Weiterentwicklung in ähnlicher Weise für positive Reaktionen sorgen. Damit rückt die PowerShell noch mehr als bisher schon ins Zentrum des Windows-Managements.

Übrigens: Von SearchDataCenter.de sind auch kostenlose E-Handbooks zu PowerShell-Grundlagen sowie zum PowerCLI-Scripting erhältlich. n

Wolfgang DietlOnline EditorTechTarget Deutschland

Während das Update auf die PowerShell 4.0 vielen als Meilenstein in der Entwicklung der PowerShell gilt, dürfte auch die neue Version 5 für positive Reaktionen sorgen.

Page 4: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE4

COPY-AND- PASTE

DSC, Remote-Editing und Copy-and-Paste mit der PowerShell 5.0

Windows 10 enthält die PowerShell 5.0, die gegenüber Vorgängerversionen viele neue Funktionen bietet. Manche davon dürften eher Hardcore-PowerShell-Nutzer ansprechen, beispielsweise die Paketverwaltung per OneGet-

Framework. Die ein oder andere neue Funktion bietet aber sicherlich auch einer breiteren Nutzer-schicht Vorteile. In diese Kategorie fällt zum Beispiel das Remote-Editieren von Dateien.Schon in früheren PowerShell-Versionen war es möglich, Remote-Verbindungen zu anderen Windows-Systemen einzurichten. Die neue

Remote-Edit-Funktion baut auf diesen Remote-Verbindungen auf und ermöglicht jetzt zusätzlich das Editieren von Dateien auf entfernten Systemen.

REMOTE-EDITIEREN VON DATEIEN

Die Einrichtung einer Remote-Session funktioniert dabei im Großen und Ganzen recht ähnlich wie bisher auch. Dazu kann der Befehl Enter-PSSession zusammen mit dem Parameter –ComputerName und dem Namen des Zielsystems verwendet werden. Anschließend muss lediglich noch der PSEdit-Befehl und der Pfad und Dateiname auf dem Remote-System angegeben werden. Wenn zum Beispiel die Datei C:\Dateien\Datei.txt auf dem Server Server1 editiert werden soll, würde dies in der PowerShell so aussehen:

Enter-PSSession –ComputerName Server1PSEdit C:\Files\File.txt

Die neue Remote-Edit-Funktion ermöglicht jetzt zusätzlich das Editieren von Dateien auf entfernten Systemen.

Page 5: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE5

COPY-AND- PASTE

LIMITIERUNG VON DSC-OPERATIONEN

Eine weitere neue Funktion betrifft die Desired State Configuration (DSC). Damit lässt sich der Zustand eines Windows-Servers mit

einem gewünschten Status abgleichen, bei Konfigurationsabweichungen werden dann automatisch Korrekturen durchgeführt.Desired State Configuration gibt es bereits seit der PowerShell 4.0, in der PowerShell 5.0 hat Microsoft jetzt einen neuen Parameter hinzugefügt, mit dem sich Limits festlegen lassen.

Diese DSC-Limits begrenzen die gleichzeitig ablaufenden DSC-Funktionen. Desired State Configuration wird oft in Verbindung mit einer

sehr großen Anzahl an Servern eingesetzt, dabei kann es schnell zu einem großen Verbrauch von Systemressourcen kommen. Durch Setzen eines DSC-Limits lässt sich dies jetzt leicht vermeiden.Die Syntax im Zusammenhang mit der Desired State Configuration bleibt dabei die gleiche wie in der PowerShell 4.0, allerdings gibt es in Version 5.0 den neuen Parameter –ThrottleLimit. Nach diesem Paramater kann festgelegt werden, wie viele DSC-Operationen gleichzeitig höchstens durchgeführt werden sollen.

VERBESSERUNGEN DER BENUTZEROBERFLÄCHE

Eine Änderungen, die wohl am willkommensten in der PowerShell 5.0 ist, betrifft allerdings nicht den Befehlssatz, sondern die Benutzeroberfläche. Seit langem ist das teils sehr unvorhersehbare Verhalten von Copy-and-Paste-Vorgängen in der PowerShell ein großer Kritikpunkt. In der Version 5 ist Microsoft auf diese Kritik eingegangen und hat das Copy-and-Paste-Verhalten grundlegend geändert.

Wenn man bisher in der PowerShell mehrere Code-Zeilen ausgewählt hat, wurde jede Zeile auch als einzelne Zeile und nicht die

Das Verhalten von Copy-and-Paste-Vorgängen in der PowerShell ist seit langem ein Kritikpunkt. In der Version 5 hat Microsoft nun das Copy-and-Paste-Verhalten grundlegend geändert.

Page 6: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE6

COPY-AND- PASTE

gesamte Auswahl als Block behandelt. Wurde beispielsweise ein langer Befehl ausgewählt, der auf vier Zeilen verteilt war, und in die PowerShell kopiert, wurde automatisch zwischen jeder Zeile ein Zeilenumbruch eingefügt.

Beim Ausführen des Codes kommt es dann natürlich zu einer Reihe von Fehlermeldungen. In der PowerShell 5.0 lässt sich dies durch Aktivierung der Line-Wrapping-Option vermeiden.

Ein weiteres kleines, aber wirklich nerviges Problem in früheren Versionen der PowerShell trat oft dann auf, wenn das Fenster verkleinert oder vergrößert wurde. Manchmal wurden

dadurch Teile des Codes durch das Fenster abgeschnitten. Die neue Version 5.0 verbessert

auch dieses Verhalten, so dass die gesamten PowerShell-Befehle im sichtbaren Teil des Fensters bleiben.–Brien Posey

Ein weiteres Problem in früheren Versionen der PowerShell trat oft dann auf, wenn das Fenster verkleinert oder vergrößert wurde.

Page 7: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE7

DSC

Die Neuerungen der Desired State Configuration

Wenn sich Einstellungen auf Servern ändern, die in der DSC-Richtlinie (Desired State Configuration) definiert sind, dann kann PowerShell DSC dies erkennen und die Konfiguration auf Wunsch wieder zurücksetzen. Damit lassen sich Windows-Systeme oft wesentlich einfacher und schneller verwalten.

Die Desired State Configuration wurde mit der PowerShell 4.0 in Windows Server 2012 R2 und Windows 8 eingeführt und mit der neuen PowerShell 5.0 deutlich verbessert.

Die neue Version kann zum Beispiel mehr Computer gleichzeitig ansprechen, um die Änderungen über das Netzwerk zu steuern. Dazu gibt es die neue Option ThrottleLimit. Die Option steht für die verschiedenen Cmdlets zur Verfügung, mit denen DSC gesteuert wird. Das sind vor allem:

Get-DscConfigurationGet-DscConfigurationStatusGet-DscLocalConfigurationManagerRestore-DscConfigurationTest-DscConfigurationCompare-DscConfigurationPublish-DscConfigurationSet-DscLocalConfigurationManagerStart-DscConfigurationUpdate-DscConfiguration

Mit dem neuen Modul PowerShellGet können Administratoren außerdem

Die Desired State Configuration wurde mit der PowerShell 4.0 in Windows Server 2012 R2 und Windows 8 eingeführt und mit der neuen PowerShell 5.0 deutlich verbessert.

Page 8: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE8

PowerShell-DSC-Ressourcen über die neue PowerShell Resource Gallery abrufen oder eigene Vorlagen hochladen.

PER DSC WINDOWS-SERVER ABSICHERN

Über die Desired State Configuration können Administratoren also Sicherheitsvorlagen für Server erstellen, die automatisch angewendet werden. PowerShell DSC kann so relativ einfach dafür sorgen, dass Server einem einheitlichen Standard entsprechen. Hierzu ist die Umgebung in der Lage, folgende Aktionen durchzuführen:• Serverrollen und -features installieren oder

deinstallieren;• Dateien und Verzeichnisse erstellen und

bearbeiten;• Gruppen und Benutzer anlegen und verwalten;• Prozesse und Dienste auf Servern verwalten und• Registry-Einstellungen setzen.Mit dem DSC Resource Kit lassen sich Ein-stellungen von Serverdiensten wie Active Directory, SQL Server, Internet Information Service (IIS), Hyper-V und auch andere Dienste mit DSC steuern. Die Grundlage der Desired

State Configuration bilden Vorlagen, die zum Beispiel Sicherheitseinstellungen beinhalten. Damit Administratoren die Vorlage einem Server zuweisen können, muss zunächst ein Management Object File (MOF) erstellt werden. Dieses MOF wird anschließend von der PowerShell gelesen und auf den Servern angewendet, die mit DSC abgesichert werden. Diese Datei kann jederzeit erneut angewendet werden, wenn Einstellungen auf dem Server abweichen.

Microsoft unterstützt Administratoren dabei mit vorkonfigurierten Vorlagen-Dateien. Eigene MOF-Dateien werden am besten nach Anleitungen aus der TechNet Library erstellt.

ERSTE SCHRITTE MIT DER

DESIRED STATE CONFIGURATION

Damit die PowerShell DSC verwendet werden kann, muss das dazugehörige Modul zunächst über den Server Manager installiert werden. Dieses Modul findet man über die Installation der Features bei Windows PowerShell\Windows PowerShell-Dienst zum Konfigurieren des gewünschten Zustands.Danach wird über die PowerShell Integrated

GENERATION-2-VMSDSC

Page 9: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE9

DSC

Scripting Engine (ISE) eine Konfigurationsdatei für DSC erstellt. Die Datei wird als PowerShell-Skript-Datei mit der Endung *.ps1 gespeichert. Ein Beispiel hierfür wäre:

Service Wuauserv{ ServiceName = „wuauserv“ StartupType = „Automatic“}

MOF-DATEIEN ERSTELLEN UND EINSETZEN

Wurde die Konfiguration als PS1-Datei gespeichert, kann mit folgendem Befehl eine MOF-Datei erstellt werden:

<Name der Konfiguration> -MachineName <Name des Servers auf den die Datei angewendet werden soll>

Der Name der Konfiguration wurde in der Skript-Datei vorgegeben. Für jeden Server, dem die Datei zugewiesen werden soll, erstellt die PowerShell eine eigene MOF-Datei. Sollen

Einstellungen geändert werden, dann muss zunächst die Skript-Datei geändert werden, um anschließend eine neue MOF-Dateien zu erstellen.

Die MOF-Dateien enthalten die Vorgaben, die in der PowerShell-Datei festgelegt wurden. Um diese Vorgaben umzusetzen, muss die MOF-Datei auf den Zielserver kopiert oder über eine Netzwerkfreigabe verwendet werden. Zur Anwendung der MOF-Datei wird das Cmdlet Start-DscConfiguration genutzt:

Start-DscConfiguration -Wait -Verbose -Path .\<Name>

SICHERHEITSEINSTELLUNGEN

ÜBERPRÜFEN UND NEU SETZEN

Administratoren können ab der neuen PowerShell-Version 5 auch überprüfen, ob die per DSC festgelegten Sicherheitseinstellungen noch so gesetzt sind, wie diese vorgegeben wurden.

Dazu wird das Cmdlet Test-DscConfiguration verwendet. Dieses überprüft, ob es Unterschiede zwischen MOF-Datei und den Einstellungen auf dem Server gibt. Das Cmdlet zeigt mit

Page 10: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE10

DSC

True (Einstellungen stimmen noch) oder False (Einstellungen wurden geändert) an, ob die Konfiguration noch den Vorgaben entspricht.

Administratoren können die MOF-Datei mit Start-DscConfiguration auch jederzeit wieder anwenden lassen.

Es besteht zum Beispiel die Möglichkeit, über DSC auch Gruppen auf dem Server anzulegen und

Benutzer zuzuweisen. Sinnvoll kann dies zum Beispiel für lokale Administrator-Gruppen und Webserver sein. Die Syntax dazu lautet:

Group Webadmins anlegen{ Ensure = „Present“ GroupName = „Webadmins“}

Nehmen Administratoren diesen Teil in die Datei mit auf, überprüft die PowerShell das Vorhandensein der Gruppe Webadmins auf den Servern und legt diese auf Wunsch gleich mit an. Hier besteht auch die Möglichkeit, mit PowerShell DSC Benutzer aufzunehmen oder aus Gruppen zu entfernen. Dazu werden die beiden Optionen MembersToExclude und MembersToInclude verwendet. –Thomas Joos

Es besteht die Möglichkeit, über DSC auch Gruppen auf dem Server anzulegen und Benutzer zuzuweisen. Sinnvoll kann dies zum Beispiel für lokale Administrator-Gruppen und Webserver sein.

Page 11: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE11

PACKAGE-MANAGEMENT

Paketverwaltung in der PowerShell

Mit Windows 10 hat Microsoft Package-Management vorgestellt, einen System-Aggregator auf Basis der PowerShell 5.0, der über ein einheitliches Set an PowerShell-Cmdlets das Arbeiten mit unterschiedlichen Installer-

Technologien ermöglicht. PackageManagement war bisher als OneGet-Framework bekannt und nutzt Installer, um Softwarepakete zu finden, zu installieren und zu warten.

Die PackageManagement-Cmdlets sind Teil der entsprechenden PackageManagement-Module der

PowerShell 5.0. Die PowerShell 5.0 mitsamt der PackageManagement-Module ist auch über das Windows Management Framework 5.0 erhältlich. Zudem hat Microsoft mittlerweile eine Preview von PackageManagement für die PowerShell-Versionen 3 und 4 veröffentlicht, mit denen sich die Paketverwaltung auch auf Windows-Systemen abseits von Windows 10 verwenden lässt.

BLICK UNTER DIE HAUBE VON

PACKAGEMANAGEMENT

Desktop-Administratoren nutzen sehr häufig unterschiedlichste Installer-Technologien, um ihre Softwarepakete zu verwalten. Dies kann zum Beispiel klassische Installer wie MSI und MSU genauso beinhalten wie die neueren Plattformen NuGet oder Chocolatey. Die Verwendung unter-schiedlicher Technologien verkompliziert aber natürlich Automatisierung und Management von Software-Deployments.

PackageManagement war bisher als OneGet-Framework bekannt und nutzt Installer, um Softwarepakete zu finden, zu installieren und zu warten.

Page 12: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE12

PACKAGE- MANAGEMENT

PackageManagement verspricht hier Abhilfe. Neben den spezifischen PowerShell-Cmdlets beinhaltet PackageManagement auch eine Komponente, die das Finden, Inventarisieren oder Installieren von Software koordiniert. Diese Komponente stellt auch die nötigen Programmierschnittstellen für die Kommunikation zwischen PackageManagement und den Anbietern der Paketquellen zur Verfügung.

Paketanbieter ermöglichen den Zugriff auf unterschiedliche Quellen an Softwarepaketen. Dabei dient jeder Anbieter als Brücke zwischen PackageManagement und einer oder mehreren Quellen. PackageManagement beinhaltet zum Beispiel den PowerShellGet-Anbieter, um auf die PowerShell Gallery von Microsoft zugreifen zu können, ein zentrales Repository für PowerShell-Befehle und DSC-Ressourcen (Desired State Configuration). Als Quelle kann dabei jedes unterstützte Repository an Softwarepaketen fungieren, egal ob lokal oder remote.Standardmäßig unterstützt PackageManagement vier Anbieter:• MSI ermöglicht die Nutzung lokaler

.msi-Pakete,

• MSU bietet Zugriff auf lokal verfügbare Update-Dateien,

• der Pograms-Provider ermöglicht den Zugriff auf lokale Software, die über Windows Add/Remove Programs hinzugefügt wurde – allerdings nur zur Inventarisierung,

• PowerShellGet ermöglicht die Nutzung der PowerShell Gallery.

Zusätzlich zu den vier standardmäßig unter-stützten Providern beinhaltet PackageManagement aber auch eine sehr einfache Möglichkeit, Anbieter wie NuGet, Chocolatey oder GistProvider zu integrieren.

DIE WICHTIGSTEN CMDLETS

FÜR PACKAGEMANAGEMENT

Das PackageManagement-Modul enthält derzeit 13 Cmdlets, um Informationen über Pakete zu erhalten und diese Pakete zu verwalten. So kann man Beispielsweise das Get-Package-Cmdlet verwenden, um Informationen über eine per MSI-Installer bereitgestellte Software abzurufen:

get-package -providername msi

Page 13: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE13

PACKAGE- MANAGEMENT

Der PowerShell-Befehl gibt für jedes MSI-Programm den Namen, die Version und den Quell-Ordner an. Man kann sich aber auch eine Liste der verfügbaren Anbieter anzeigen lassen, dies erfolgt über das Get-PackageProvider-Cmdlet:

get-packageprovider –listavailable

Das Attribut –listavailable lässt eine Liste aller lokal installierten Provider anzeigen, nicht nur die in der jeweiligen Sitzung laufenden. Als Minimum sollte der Befehl zumindest immer die vier Standard-Provider angeben, die ja immer installiert und verfügbar sind.

Um sich eine Liste aller derzeit konfigurierten Quellen anzeigen zu lassen, kann das Cmdlet

Get-PackageSource verwendet werden, das einfach alle Quellen oder nur die für einen bestimmten Anbieter verfügbaren Quellen anzeigen kann. Der folgende Befehl listet zum Beispiel alle Quellen für den PowerShellGet-Provider auf:

get-packagesource -providername PowerShellGet

Standardmäßig wird hier nur eine Ressource aufgeführt, PSGallery, also die PowerShell Gallery. Anbieter lassen sich aber auch hinzufügen, um dann weitere Quellen für jeden Provider hinzufügen zu können. Bevor man einen Anbieter hinzufügt, sollte man über das Find-PackageProvider-Cmdlet überprüfen, welche Provider für das lokale System verfügbar sind. Hierfür kann der Befehl auch zunächst ohne jede weitere Spezifizierung ausgeführt werden. Für jeden Anbieter wird das Cmdlet den Namen, die Version und Quelle sowie eine zusammenfassende Beschreibung ausgeben.

Beim ersten Ausführen des Find-PackageProvider-Cmdlets wird man eine

Das PackageManagement-Modul enthält derzeit 13 Cmdlets, um Informationen über Pakete zu erhalten und diese Pakete zu verwalten.

Page 14: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE14

PACKAGE- MANAGEMENT

Fehlermeldung erhalten, wonach der NuGet-Provider nicht installiert ist. Für viele Funktionen von PackageManagement muss zunächst NuGet installiert werden, was einfach durch Bestätigung in der Benachrichtigung erledigt werden kann – PackageManagement kümmert sich dann um den Rest.

Ab diesem Zeitpunkt lässt sich das Install-PackageProvider-Cmdlet verwenden, um einen der verfügbaren Anbieter zu installieren. Wer beispielsweise Chocolatey installieren will, kann dies über den folgenden Befehl erledigen:

install-packageprovider -name chocolatey -scope currentuser

Das scope-Attribut kann dabei unter Umständen auch weggelassen werden, je nachdem, wie die PowerShell ausgeführt wird und welche Rechte der Anwender hat. Wenn beim Ausführen des Befehls ein Zugriffsfehler angezeigt wird, sollte das Attribut angehängt werden. Wird die PowerShell als Administrator ausgeführt, sollte es dagegen weggelassen werden.

Nachdem der Befehl eingegeben wurde, muss die

Auswahl noch bestätigt werden, erst dann erfolgt die Installation. Anschließend muss über das Import-PackageProvider-Cmdlet der Anbieter noch zur aktuellen Sitzung hinzugefügt werden:

import-packageprovider -name chocolatey

Sobald der Provider importiert wurde, kann das Register-PackageSource-Cmdlet verwendet werden, um eine Chocolatey-Quelle als Repository hinzuzufügen. Hierbei muss eine Name für die Quelle, der Provider-Name sowie die URL des Repository angegeben werden:

Register-PackageSource -name choc2 -providername chocolatey -location http://chocolatey.org/api/v2/ -trusted

In diesem Beispiel lautet der zugewiesene Name choc2 und es wurde das Attribut –trusted hinzugefügt, wodurch die PowerShell den Befehl ohne weitere Bestätigung ausführt. Anschließend kann der Find-Package-Befehl ausgeführt werden, um sich eine Liste der verfügbaren Pakete anzeigen zu lassen.

Page 15: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE15

PACKAGE- MANAGEMENT

find-package -provider chocolatey -source choc2

Wenn dieser Befehl ausgeführt wird, sieht man schnell, dass über diese Quelle hunderte Pakete verfügbar sind. Aus diesem Grund wird man die Suche sicherlich eingrenzen wollen, was mit dem folgenden Befehl beispielsweise für alle Pakete rund um Notepad2 möglich ist:

find-package -provider chocolatey -source choc2 -name notepad2

In diesem Fall gibt der Befehl nur noch einen Treffer aus und das entsprechende Paket kann über die Pipe-Funktion ganz einfach über das Install-Package-Cmdlet installiert werden:

find-package -provider chocolatey -source choc2 -name notepad2 | install-package

Mit diesen einfachen Befehlen lassen sich per PackageManagement umfangreiche Softwarepakete installieren. Die gleichen Schritte können zur Installation von Paketen aus anderen Quellen durchgeführt werden.

Allerdings sollte man darauf achten, dass zur Installation die Execution Policy der PowerShell auf Remote Signed oder Unrestricted stehen muss. Andernfalls werden die Pakete zwar ins lokale System kopiert, die Applikation selbst wird aber nicht installiert.–Robert Sheldon

Man sollte darauf achten, dass zur Installation die Execution Policy der PowerShell auf ‘Remote Signed’ oder ‘Unrestricted’ stehen muss.

Page 16: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE16

CONVERTFROM

Daten-Strings in der PowerShell parsen

Einer der großen Vorteile, der die PowerShell gegenüber anderen Skriptsprachen auszeichnet, ist die hervorragende Möglichkeit, mit Objekten umzugehen. Objekte bieten hier einen strukturieren Weg, um Informationen über verschiedene Methoden hinweg zu repräsentieren.Allerdings kann natürlich nicht alles als ordentlich strukturiertes Objekt wiedergegeben werden.

Manchmal müssen Administratoren auch mit unstrukturierten Daten umgehen, beispielsweise mit einem Daten-String als Output einer Legacy-Anwendung. Diese Daten müssen dann irgendwie in ein strukturiertes Format überführt werden.

Aus diesem Grund dürften Windows-Administratoren die vielen neuen Funktionen der Windows PowerShell 5.0 zu schätzen wissen, allen voran, wie sich damit mit unstrukturierten Daten umgehen lässt. Eine der wichtigsten neuen Funktionen in diesem Zusammenhang ist das Cmdlet ConvertFrom-String, mit dem sich die Zeit für das Konvertieren unstrukturierter Daten

zu einem PowerShell-Objekt deutlich reduzieren lässt. Das ConvertFrom-String-Cmdlet wurde ursprünglich von Microsoft Research für das FlashExtract-Projekt entwickelt und konvertiert unstrukturierte Zeichenketten über einen Parser auf Basis von Trennzeichen beziehungsweise Separatoren oder auch über Templates zu strukturieren Objekten.

CONVERTFROM-STRING

UND DER DELIMITER-PARAMETER

Trennzeichen oder Separatoren werden in der PowerShell als Delimiter bezeichnet. Über den Delimiter-Parameter lassen sich also unstrukturierte Daten-Strings über reguläre Ausdrücke in unterschiedliche Elemente aufteilen.Nehmen wir als Beispiel an, wir haben eine Zeichenkette mit Buchstabengruppen vorliegen, die durch zwei Leerzeichen voneinander getrennt sind. Um hier die einzelnen Gruppen getrennt

Page 17: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE17

GET- CHLDITEM

zu erhalten, lassen sich als Trennzeichen, also als Delimiter, zwei Leerzeichen verwenden. Anschließend kann das ConvertFrom-String-Cmdlet auf den Daten-String angewandt werden.

P1 P2 P3-- -- --Test1 Test2 Test3

Die Objekte P1, P2 und P3 können dann je nach Bedarf weiterverwendet werden. Allerdings ist die Bezeichnung P1, P2 und P3 keine besonders

intuitive Beschreibung der Objekte. Über den PropertyNames-Parameter kann daher eine aussagekräftigere Namensgebung gewählt werden,

beispielsweise Gruppe 1, Gruppe 2 und Gruppe 3.Auch wenn das soweit natürlich sehr nützlich sein kann, kannte die PowerShell mit dem Cmdlet ConvertFrom-StringData bereits eine sehr ähnliche Funktion.

Wesentlich interessanter an ConvertFrom-String ist daher die Möglichkeit, zum Parsen Templates zu verwenden. Das Template macht der Zeichenkette dann gewisse Vorgaben, das ConvertFrom-String-Cmdlet kann damit die Struktur des Strings besser verstehen und parsen. Als einfaches Beispiel können wir den folgenden Text nehmen:

Name: Craig Trudeau

Name: Merle Baldridge

Name: Adam Bertram

Name: George Lucas

Dem ConvertFrom-String-Cmdlet kann nun über ein Template mitgeteilt werden, an welcher Stelle sich Vor- und Nachname befinden.

CONVERTFROM

Einer der großen Vorteile, der die PowerShell gegenüber anderen Skriptsprachen auszeichnet, ist die hervorragende Möglichkeit, mit Objekten umzugehen.

Page 18: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE18

GET- CHLDITEM

Name:{FirstName*:Adam} {LastName:Bertram}

Name:{FirstName*:Merdfdfle} {LastName:Baldfdfd}

Damit erhalten wir vier Objekte mit FirstName- und LastName-Werten.

FirstName LastName--------- --------- Craig TrudeauMerle BaldridgeAdam BertramGeorge Lucas

Indem man dem Template nur zwei Instanzen vorgibt, erkennt das Cmdlet das Muster und kann auch alle anderen in der gleichen Weise parsen.Jede Zeile fängt mit Name: an, dieser Teil soll aber nicht ausgegeben werden und muss daher in das Template integriert werden. Name: repräsentiert einen Buchstaben-String, den das ConvertFrom-String-Cmdlet finden muss. Der Text innerhalb der geschwungenen Klammern gibt an, was als Ergebnis ausgegeben werden soll.

In diesem Fall muss auch der PropertyNames-Parameter nicht angewandt werden, weil der Property-Name bereits innerhalb des Templates

angegeben werden kann. Ein Asterisk muss verwendet werden, wenn die Zeichenkette mehrere Referenzen enthält, die den Template-Vorgaben entsprechen. Der Asterisk gibt damit den Beginn einer neuen Gruppe an.

Der genutzte Template-String entspricht nicht den Namen innerhalb des Textes. Man benötigt hier nur eine Repräsentation dessen, wie der String aussehen soll. Das Cmdlet wird dann den Rest erledigen.

Im folgenden Code-Block zum Erstellen, Lesen und Parsen einer Textdatei mit ConvertFrom-String kann man diesen Vorgang testen.

Die Möglichkeit zur Verwaltung von Netzwerk-Switches direkt in der PowerShell ist für einen Administrator ein Riesenschritt vorwärts.

CONVERTFROM

Page 19: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE19

GET- CHLDITEM

$rows = @’Name:Craig TrudeauName:Merle BaldridgeName:Adam BertramName:George Lucas‘@

Add-Content -Path C:\File.txt –Value $rows

$template = @’Name:{FirstName* :Adam} {LastName:Bertram}Name:{FirstName* :Merdfdfle} {LastNameBaldfdfd}

‘@

$SampleData = gc C:/File.txt -Raw$SampleData | ConvertFrom-String –TermplateContent $template

Komplexere Daten-Strings werden sicherlich stärkere Anpassungen erfordern. Prinzipiell kann das Cmdlet aber so gut wie jeden String parsen, sofern man über ein Template vorab nur die richtige Struktur vorgibt.

Für weitere Beispiele und einen tieferen Einblick empfiehlt sich ein Blog-Post von Stephen Owen zum fortgeschrittenen Parsen mit ConvertFrom-String.–Adam Bertram

CONVERTFROM

Page 20: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE20

GET- CHLDITEM

Switch-Konfiguration in der PowerShell 5.0

Seit ihrer Einführung im Jahr 2006 wurde die Windows PowerShell kontinuierlich weiterentwickelt, um System-Administratoren bei der Verwaltung und Automatisierung

verschiedener Aufgaben für Windows-Server und Windows-Clients zu unterstützen. Mit der neuen PowerShell 5.0 hat Microsoft den Funktionsumfang jetzt auf einen Bereich ausgedehnt, der Server-Administratoren bisher wohl eher unbekannt war: Netzwerk-Switches.

2012 hat Microsoft die Verfügbarkeit der Open Management Infrastructure (OMI) angekündigt, einer Industrieinitiative, die das Management von Hardwaregeräten ein Stück weit öffnen soll. Microsoft will damit die Anzahl proprietärer Protokolle und Tools reduzieren, um stattdessen einen offenen Standard zu etablieren. Microsoft selbst unterstützt die OMI über die Datacenter Abstraction Layer (DAL). Bereits zu diesem frühen Zeitpunkt hat Microsoft auch die Unterstützung für die PowerShell integriert.

Als Teil von Microsofts DAL-Initiative wurde ein Programm namens Certified for Windows Network Switches implementiert. Über dieses Programm konnten Anbieter von Netzwerk-Appliances sicherstellen, dass ihre Management-APIs auch mit DAL funktionierten und über die PowerShell verwaltet werden konnten.

Mit der PowerShell 3.0 führte Microsoft dann ein Set an CIM-Cmdlets (Common Information Model) ein, mit denen Administratoren sowohl

NETWORK-SWITCH

Zu den bekanntesten Ver-besserungen der PowerShell 5.0 gehören das Remote-Editieren und die neuen Möglichkeiten der PowerShell Desired State Configuration.

Page 21: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE21

GET- CHLDITEM

mit Windows-Systemen als auch mit anderen Netzwerk-Appliances interagieren konnten. Schon damals war es möglich, Netzwerk-Switches und andere Netzwerkhardware zu verwalten, ohne hierfür extra Software zu benötigen.

Viele PowerShell-Anwender empfanden den Umgang mit den CIM-Cmdlets aber als sehr mühsam, weshalb Microsoft die Nutzererfahrung mit dem NetworkSwitch-Modul der PowerShell 5.0 optimieren will.

SWITCH-KONFIGURATION MIT

DEM NETWORKSWITCH-MODUL

Die Möglichkeit zur Verwaltung von Netzwerk-Switches direkt in der PowerShell ist für einen Administrator ein Riesenschritt vorwärts. Aber wie probiert man diese Funktion am besten aus? Zunächst sollte man seine bisherigen Tools zum Netzwerk-Management nicht voreilig aussortieren. Damit sich Netzwerkgeräte nämlich überhaupt per PowerShell verwalten lassen, müssen sie nach wie vor das Management per OMI unterstützen. Informationen hierzu dürften sich beim jeweiligen Switch-Hersteller finden.

Sofern sich Unternehmens-Switches über OMI verwalten lassen, benötigt man zunächst noch das Windows Management Framework 5.0 (WMF 5.0) und zusätzlich das NetworkSwitchManager-Modul. Nach der Installation des WMF kann über den Befehl Get-Module überprüft werden, ob das Modul verfügbar ist.

Während man dann zwar zum Beispiel bereits Ports und VLANs verwalten kann, sind längst noch nicht alle Funktionen implementiert. Sowohl die PowerShell 5.0 als auch das NetworkSwitch-Modul sind beide noch recht neu und Microsoft wird hier in naher Zukunft sicherlich noch Cmdlets und Funktionen nachlegen.

Für den Anfang muss zunächst eine CIM-Sitzung mit einem unterstützten Switch ein-gerichtet werden.

Hierfür wird der Befehl New-CimSession verwendet. Abhängig von der bevorzugten Methode können über New-CimSessionOption auch gleich mehrere Konfigurationen gleichzeitig vorgenommen werden.

Der folgende Code richtet eine CIM-Sitzung über HTTPS für den Host MYHOST und den Admin-Namen admin ein.

NETWORK-SWITCH

Page 22: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE22

GET- CHLDITEM

$option = New-CimSessionOption -UseSsl -SkipCACheck -SkipCNCheck -SkipRevocationCheck $session = New-CimSession -CN MYHOST -port 5986 -Auth Basic -Credential admin -SessionOption $sessionOption

Sobald die CIM-Sitzung eingerichtet ist, muss diese Sitzung jedes Mal über den Parameter –CimSession spezifiziert werden, wenn eines der Modul-Cmdlets genutzt wird. Um beispielsweise alle Ports auf dem Switch anzeigen zu lassen, würde man den folgenden Befehl verwenden:

Get-NetworkSwitchEthernetPort –CimSession $session

Das Hinzufügen von $session an den CimSession-Parameter wird das Cmdlet zusammen mit den richtigen Anmeldedaten an den entsprechenden Host verweisen, um anschließend alle Switch-Ports aufzulisten. Dieses Vorgehen ist wesentlich einfacher als die alte Methode zur Auflistung der Switch-Ports:

Get-CimInstance CIM_EthernetPort

-CimSession $Session

Bevor das NetworkSwitchManager-Modul in die PowerShell integriert wurde, mussten Administratoren zuerst den Class Name des CIM wissen, was enorm umständlich war.

Um als weiteres Beispiel einen Port auf einem Switch zu deaktivieren, kann jetzt das Cmdlet Disable-NetworkSwitchEthernetPort verwendet und über den PortNumber-Parameter die CIM-Sitzung spezifiziert werden:

Disable-NetworkSwitchEthernetPort -CimSession $Session -PortNumber 21

Diese Methode des Switch-Managements ist wesentlich einfacher, als verschiedene Softwarepakete zu installieren und sich die unterschiedlichen Wege zu merken, wie sich die einzelnen Switch-Modelle konfigurieren lassen. Allerdings unterstützen bisher noch nicht alle Switch-Hersteller die OMI-Spezifikation, eine Nachfrage bei einem Anbieter eines offiziell nicht unterstützten Switches kann aber sicher nicht schaden. –Adam Bertram

NETWORK-SWITCH

Page 23: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE23

GET- CHLDITEM

Wenig bekannte Neuerungen der PowerShell 5.0

Microsoft integriert mit jeder neuen Version der PowerShell zahlreiche neue Funktionen und Verbesserungen, so auch natürlich in der PowerShell 5.0.

Einige der mittlerweile bekanntesten neuen Funktionen wären beispielsweise die Paketverwaltung per OneGet-Framework oder die Konfiguration von Netzwerk-Switches mit dem neuen NetworkSwitch-Modul. Zu den bekanntesten Verbesserungen dagegen gehören

beispielsweise das Remote-Editieren und die neuen Möglichkeiten der PowerShell Desired State Configuration.

Daneben gibt es aber auch dutzende Neuerungen, die bisher weniger bekannt, aber dennoch äußerst hilfreich beim Arbeiten mit der PowerShell sind. Die folgenden vier neuen Funktionen gehören sicherlich dazu.

COPY-ITEM-CMDLET

Lee Holmes, Senior Software Developer Engineer for PowerShell bei Microsoft, hat vor Jahren ein beliebtes PowerShell-Skript namens Send-File.ps1 geschrieben, mit dem sich Dateien über Remote-Sitzungen verschicken lassen. Der Vorteil des Skripts liegt vor allem im Verzicht auf das SMB-Protokoll (Server Message Block) zur Dateiübertragung.

Bei der Nutzung des Skripts machten sich Administratoren allerdings keine Gedanken

GET- CHLDITEM

Mit der neuen PowerShell 5.0 hat Microsoft den Funktionsumfang jetzt auf einen Bereich ausgedehnt, der Server-Administratoren bisher wohl eher unbekannt war: Netzwerk-Switches.

Page 24: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE24

GET- CHLDITEM

darüber, einfach einen weiteren Firewall-Port zu öffnen. Damit konnte für Kopiervorgänge dann der TCP-Port der Remote-Sitzung genutzt werden. Microsoft hat sich mit der PowerShell 5.0 nun entschieden, diese Funktion in die native Codebasis zu überführen, über den ToSession-Parameter lässt sich dies nun mit dem Copy-Item-Cmdlet durchführen.

Das folgende Beispiel zeigt, wie sich eine neue PowerShell-Sitzung zu einem Remote-Computer aufbauen lässt, wie anschließend der Dateipfad für die zu kopierende Datei und der Zielpfad sowie die zu nutzende Session angegeben wird. Damit ist kein externes Skript mehr nötig.

$remotesession = New-PSSession –ComputerName `192.168.0.121` -Credential $credCopy-Item C:/Users/Adam/Documents/MyTextFile.txt –ToSession $remotesession –Destination `C:/`Invoke-Command –Session $remotesession –ScriptBlock {Test-Path -Path C:/MyTextFile.txt}True

NATIVE UNTERSTÜTZUNG FÜR ZIP-DATEIEN

In früheren PowerShell-Versionen gab es keine native Möglichkeit, ZIP-Dateien zu erstellen oder zu extrahieren.

Stattdessen mussten auch hier externe Skripte genutzt werden. Mit der PowerShell 5.0 ändert sich dies, da hier die entsprechende Funktion in das Microsoft.PowerShell.Archive-Modul integriert wurde.

Dieses Modul enthält also ein Cmdlet zu Erstellen von ZIP-Dateien (Compress-Archive) und ein Cmdlet zum Extrahieren von ZIP-Dateien (Expand-Archive).

Im folgenden Beispiel wird dargestellt, wie sich mehrere Dateien als Archiv in einem Ordner zusammenfügen lassen, um daraus über Compress-Archive eine ZIP-Datei zu erstellen.

$folder = `C:/Users/Adam/Desktop`$destinationZip = `C:/Users/Adam/Documents/myzip.zip`Get-ChildItem -Path $folder | Compress-Archive -DestinationPath $destinationZipGet-item $destinationZip

GET- CHLDITEM

Page 25: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE25

GET- CHLDITEM

Entsprechend wird das Archiv über Expand-Archive wieder extrahiert.

Get-item $destinationZip | Expand-Archive

SYMBOLISCHE VERKNÜPFUNGEN

IN DER POWERSHELL 5.0

Die Bash-Shell in Linux kennt schon eine ganze Weile die Möglichkeit zum Erstellen von symbolischen Verknüpfungen im Dateisystem, auch symbolische Links genannt. Bisher war dies in der PowerShell nur über .NET-Code oder über Kommandozeilen-Tools wie mklink.exe möglich. Mit der PowerShell 5.0 werden symbolische Links jetzt aber zu einer nativen Funktion.

Indem nur ein einziges Parameter-Argument an den ItemType-Parameter des New-Item-Cmdlets angehängt wird, können nun native symbolische Verknüpfungen erstellt werden, ohne externe Tools oder .NET-Code zu benötigen.

In der PowerShell gibt es schon lange das Get-ChildItem-Cmdlet, um verschiedene Items nach Provider aufzulisten. Das Auflisten von Dateien und Ordnern im Dateisystem oder von

Registry Keys in der Registry sind einige der häufigsten Anwendungsfälle für dieses Cmdlet. Sowohl das Dateisystem als auch die Registry speichern Informationen in einem hierarchischen Format durch Ordner oder Registry Keys.Über den –Recurse-Parameter können sich Administratoren Objekte in Unterordnern anzeigen lassen. Dieser Parameter geht die gesamte Hierarchie der Objekte durch und listet dabei alle Unterordner und Registry Keys auf. Bisher war es allerdings schwierig, die Tiefe der angezeigten Hierarchieebene zu beeinflussen. In der PowerShell 5.0 hat Microsoft jetzt den –Depth-Parameter für das Get-ChildItem-Cmdlet integriert, um diesen Vorgang einfacher zu gestalten. Wenn beispielsweise eine Ordnerstruktur mit fünf Hierarchieebenen vorliegt, dann ließe sich über das Get-ChildItem-Cmdlet in Verbindung mit dem –Recurse-Parameter jeder dieser Unterordner auflisten.

Wenn man nun aber nur alle Unterordner der zweiten Hierarchieebene angezeigt bekommen will, dann lässt sich dies jetzt über den –Depth-Parameter bewerkstelligen: -Recurse –Depth 2. –Adam Bertram

Page 26: PowerShell 5.0: Die wichtigsten Cmdlets und Moduledocs.media.bitpipe.com/.../item_1387986/...Cmdlets_und_Module.pdf · Directory, SQL Server, Internet Information Service (IIS), Hyper-V

EDITORIAL

COPY-AND-PASTE

DESIRED STATE CONFIGURATION

PACKAGEMANAGEMENT

CONVERTFROM

NETWORKSWITCH

GET-CHILDITEM

ÜBER DIE AUTOREN

POWERSHELL 5.0: DIE WICHTIGSTEN CMDLETS UND MODULE26

ÜBER DIE AUTOREN

BRIEN M. POSEY hat bereits 14 Microsoft-MVP-Auszeichnungen für Exchange Server, Windows Server und Internet Information Server (IIS) erhalten. Er hat als CIO für eine Krankenhauskette gearbeitet und war für das Department of Information Management in Fort Knox zuständig.

THOMAS JOOS beschäftigt sich bereits sein gesamtes Berufsleben mit Informationstechnologie und ist Autor von mehr als 60 Büchern zu Microsoft-Technologien, Netzwerksicherheit und Cloud-Themen. Auch der parallele Betrieb von Microsoft-Systemen mit Linux und Open-Source-Lösungen stehen im Zentrum seines Interesses.

ROBERT SHELDON ist technischer Berater und Autor mehrerer Bücher, Artikel und Schulungsmaterialien über Microsoft Windows, relationale Datenbank-Management- Systeme (DBMS) sowie Design und Implementierung von Business Intelligence.

ADAM BERTRAM ist Consultant und Unternehmer. Er ist ein Microsoft PowerShell MVP sowie Autor verschiedener Trainingskurse für Pluralsight und Udemy. Zudem schreibt er sowohl für Print- als auch für Online-Medien im IT-Bereich.

PowerShell 5.0: Die wichtigsten Cmdlets und Module

ist eine Publikation von SearchDataCenter.de

Michael Eckert | Editorial Director

Malte Jeschke | Senior Online Editor

Wolfgang Dietl | Online Editor

Tobias Wendehost | Online Editor

Becky Wrigley | Copy Editor/Layout

Bill Crowley | Herausgeber [email protected]

TechTarget 275 Grove Street, Newton, MA 02466

www.techtarget.com

© 2016 TechTarget Inc. Kein Teil dieser Veröffentlichung darf ohne vorherige schriftliche Genehmigung des Verlages in irgendeiner Form oder auf irgendeine Weise weitergegeben oder reproduziert werden. Nachdrucke von TechTarget-Pub-likationen sind verfügbar über The YGS Group.

Über TechTarget: TechTarget publiziert Informationen für Profis im Bereich In-formationstechnologie. Mehr als 100 Themen-Websites ermöglichen schnellen Zugriff auf ein reichhaltiges Angebot an Nachrichten, Ratgebern und Analysen über die Technologien, Produkte und Prozesse, die entscheidend sind für beruflichen Erfolg. Unsere Live- und virtuellen Veranstaltungen vermitteln direkten Zugang zu den Einschätzungen und Ratschlägen unabhängiger Experten. IT Knowledge Exchange, unsere soziale Community, bietet die Möglichkeit, um Rat zu fragen und sich mit Kollegen und Experten über Lösungen auszutauschen.