Dr. Holger Schwichtenberg Softwarearchitekt, Berater, Fachjournalist Version 1.3b/21.02.08 Download...

Post on 06-Apr-2015

104 views 0 download

Transcript of Dr. Holger Schwichtenberg Softwarearchitekt, Berater, Fachjournalist Version 1.3b/21.02.08 Download...

Windows PowerShell{ für Administratoren}

Dr. Holger SchwichtenbergSoftwarearchitekt, Berater, Fachjournalistwww.IT-Visions.de

Version 1.3b/21.02.08

Download der Folien und Skripte:http://www.it-visions.de/v4991.aspx

Dr. rer. pol. Diplom-WirtschaftsinformatikerMVP, .NET Code Wise Member, MCSDseit 1996 Softwareentwicklung mit Windows COM/.NETHeute: Firma www.IT-Visions.de (Sitz: Essen)

50%: Architektur, Design, Entwicklung50%: Beratung, Schulungen, Coaching, Fachartikel, Fachbücher, Konferenzvorträge

Fachjournalist iX, DOTNETpro, Computer Zeitung, Windows IT Pro, PC Magazin, ObjektSpectrum, MSDN Online, u.a.Buchautor Addison-Wesley, Microsoft Press, WEKA MediaVortragender nationale und internationale Fachkonferenzen (TechEd, OOP, ADC, BASTA, IT Forum, STC, WI, Net.Object Days, etc.)

Kontakt hs@IT-Visions.deCommunity Website http://www.dotnetframework.deWeblog http://www.dotnet-doktor.de

Über den Sprecher : Dr. Holger Schwichtenberg

Bücher zur PowerShell

16. März 2007

150 Seiten zur PowerShell

18. Oktober 2007

Wer sind Sie?

Windows Administratoren (oder Entwickler)Erfahrung mit Batch, WSH, ADSI, WMIKeine Grundkenntnisse in PowerShell (dies ist ein Einführungsvortrag „Level 200“ !)

InhaltDie wichtigsten Fakten zur PowerShellMotivation: WSH versus PowerShellGrundkonzepte der PowerShell

Commandlets Objektorientiertes PipeliningAnbindung an .NET, COM und WMIEinheitliches Navigationsparadigma PowerShell Skript LanguagePowerShell-Skripte

AnwendungsbeispieleProzesse, Dienste, Dateisystem, EreignisprotokolleRegistryACLsActive DirectoryIIS 7.0Datenbankzugriff

Ausblick

Die wichtigsten Fakten zur PowerShell

Interaktive Systemadministration + ScriptingNachfolger von DOS-Fenster und WSHBasis: .NET 2.0 (läuft aber auch mit .NET 3.x!)Option in W08, kostenfreies Add-On für XP, 2003, VistaZugriff auf .NET, COM, WMI, ADSI, XML, u.v.m.Einzelbefehle: Commandlets (.NET-Klassen)Befehlskombination: Objekt-PipeliningSkripte: PowerShell Skript Language (PSL)Mengen: Navigation ProviderEigene Commandlets (Skript oder .NET)Hosting der PowerShell in eigenen .NET-AnwendungenPowerShell-fähige Produkte: Exchange 2007, System Center Virtual Machine Manager (SCVMM), …

Installation in Windows 2008

Motivation: Softwareinventar

Erstelle eine Inventardatei (CSV)Alle installierten AnwendungenFilter auf HerstellerVon mehreren ComputermIn eine CSV-Datei

Eingabedatei: Computernamen.txtAusgabedatei: Softwareinventar.csv

Lösung mit dem WSH/VBScript

Lösung mit der PowerShell

Einflussfaktoren

PowerShell

Microsoft DOS-Shell

Unix-Shells

.NET Framework

Windows Script Host

Windows Management

Instrumentation (WMI)

Oberfläche,

Befehlsnamen

Pipelining,

Sprachsy

ntax,

Befehlsnamen

Perl, C#Sprachsyntax

Objektorie

ntierung,

Softwareko

mponenten,

Reflecti

on,

Klassen

Kla

ssen

,S

iche

rhei

tsko

nze

ptKlassen,

Kommandozeilenwerkzeug wmic.exe

Commandlets & andere Befehle

Commandlets (Cmdlets)Allgemeine Syntax: Verb-Substantiv [-Parameterliste]Beispiele:

get-process, get-service, get-locationget-childitem c:\daten, set-location c:\windows,remove-item, u.a.get-command, get-help

Mathe: 10* (8 + 6)DOS-/Windows-EXEs: c:\Windows\Notepad.exe WSH-Skriptdateien: .vbs, .js, .vbe, .wsf, etc.Windows-Dokumente: .pdf, .doc, .xls, etc.

DEMO

Objektorientiertes PipeliningKeine unstrukturierten Daten == Zeichenketten (kein grep, kein sed)sondern .NET-Objekte (strukturiert!)PowerShell Pipeline Processor reicht Objekt von Upstream- zu Downstream-Objekt weiter"compositional model of administration" Get-Process | Where-Object { $_.name -eq "iexplore" } | Format-Table ProcessName, WorkingSetget-childitem c:\daten -filter *.dll | where-object {$_.Length -gt 40000}| sort-object Length | format-list

Pipelining-CommandletsAusgaben: Format-Table, Format-List, Format-Wide Filtern: where-object, select-object –first / -last"Kastrieren": select-object(Abschneiden von Attributen der Objekte)

Sortieren: sort-objectGruppieren: group-objectSequentielle Verarbeitung: foreach-objectPipeline analysieren: get-memberBerechnungen: measure-objectVariablen in Pipelines: $x = get-process … $x | …Zusammenfassung: $( get-process ; get-service )

DEMO

PowerShell Pipeline Processor

Commandlet #1get-service

Commandlet #2 where-object

Commandlet #3out-file

PowerShell Pipeline Processor

Out

put

pip

elin

e

Inpu

tpip

elin

e

Ou

tput

pipe

line

Inpu

tpip

elin

e

Upstream

-C

omm

andlet

Do

wnstream

-C

omm

andlet

© Dr. Holger Schwichtenberg 2004-2006

get-service | Where-Object {$_.status -eq "running"} | out-file

Objekt vom Typ System.

ServiceProcess.ServiceController

Selektion

Speicherung

NEU: PowerShell Plus

Kommandozeile mit IntelliSenseEditor mit IntelliSense und Debuggerhttp://www.powershell.com79 Euro / kostenlos für nicht-kommerziellen Einsatz

DEMO

Verlosung…

Drei Vollversionen der PowerShell PlusIm Wert von 79 Euroan die drei Personendie eine E-Mail mit dem Betreff „PowerShell ist cool!“… im Posteingang von launch08@IT-Visions.de platzieren…als 1., 15. und 50. !

Allgemeine Parameter

Viele Commandlets unterstützen: -Whatif -Confirm-Verbose DEMO

launch08@IT-Visions.de

PowerShell ist cool!

Arbeit mit Objekten

Instanziieren, Methoden, Attribute, (Abfragen).NET$d= new-object System.DateTime(2004, 12,1[System.Environment]::ComputerName

COM$wsh = new-object –com "WScript.Shell"

WMIget-wmiobject win32_useraccount

Beispiel (.NET): $Url = "http://www.windows-scripting.com" $wclient = new-object System.Net.WebClient $html = $wclient.DownloadString($Url)

DEMO

WMI-Beispiele

Name und freie Bytes auf allen LaufwerkenGet-Wmiobject Win32_logicaldisk | Select-Object deviceid,freespaceName und Domain der Benutzerkonten, deren Kennwort niemals verfälltGet-Wmiobject Win32_account | Where-Object {$_.Kennwortexpires -eq 0 } | Select-Object Name,DomainAlle Netzwerkadapter mit TCP/IP (Filter)Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | select Description,IPAddressAusgewählte Protokolleinträge (WQL)Get-WmiObject -query "SELECT RecordNumber, Message FROM Win32_NTLogEvent where Logfile='Application' and TimeWritten > '14/02/2008' and message like '%exchange%'"

PowerShell ProviderUnterschiedliche Datenmengen: hierarchisch/flachGleiche Verben: get, set, new, remove, etc.Get-PSDriveMenge der Provider und Menge der Laufwerke ist erweiterbar Verfügbare Mengen

RegistryUmgebungsvariablenAliaseZertifikateVariablenActive Directory/LDAP PSCXDemnächst: SQL Server

Registry-BeispielNavigation zu HKEY_LOCAL_MACHINE/Softwarecd hklm:\softwareKurzform für: Set-Location hklm:\softwareAuflisten der Unterschlüssel des aktuellen SchlüsselsDirKurzform für: Get-ChilditemErzeugen eines Unterschlüssels mit Namen „IT-Visions“md IT-VisionsErzeugen eines Unterschlüssels mit einem StandardwertNew-Item -Name "Inhaber" -Value "Dr. Holger Schwichtenberg" -type StringErzeuge WertNew-Itemproperty -path "hklm:\software\www.it-visions.de" -name "Inhaber" -value "Dr. Holger Schwichtenberg" -type stringLese WerteGet-ItemProperty

DEMO

Skripte - Kontrollstrukturen$Variableif (Bedingung) {…} else {…}switch ($var) { Wert: {…} }while(Bedingung) { … }do { … } while (Bedingung)do { … } until (Bedingung)foreach ($var in $menge) {…}function name {…}returntrap Fehlerklasse { … } else { … }throw "Fehlertext"throw FehlerklasseExit# Kommentar

SkriptdateienTextdateienDateierweiterung .ps1. Die Zahl 1 steht dabei für die Version 1.0 der PowerShell. Microsoft hat in Hinblick auf die Langlebigkeit vieler Scripts vorgesehen, dass verschiedene Versionen der PowerShell auf einem System koexistieren können.Start innerhalb der PowerShell:

Skriptname oder Skriptname.ps1 oder&Skriptname.ps1 oderInvoke-Expression Skriptname.ps1

Außerhalb der PowerShell:PowerShell Skriptname.PowerShellPowerShell –command Skriptname.PowerShell

Beispiel

Execution Policies

Restricted: keine Skripte (STANDARDEINSTELLUNG!)AllSigned: nur signierte Skripte, signierte Skripte von nicht-vertrauten Quellen auf NachfrageRemoteSigned: Signatur nur für Skripte aus dem Internet (via Browser, Outlook, Messenger)Unrestricted: alle Skripte laufen

DEMO

Skripte signieren

makecert.exedir cert:## sign-file.PowerShell## Sign a fileparam([string] $file=$(throw "Please

specify a filename."))$cert = @(get-childitem cert:\

CurrentUser\My -codesigning)[0]set-authenticodeSignature $file $cert

{ Anwendungsbeispiele}

- Dateisystem: Ordnergrößen ermitteln (rekursiv)- Dateisystem: ACL verändern- Active Directory: Benutzer anlegen (zwei Varianten)- Eine Datenbank auslesen (und Benutzer anlegen)- IIS: Eine Menge von IIS-Websites anlegen

Demos Download des Codes:http://www.it-visions.de/V4991.aspx

Fazit

IntuitionPrägnanzTypsicherheit

Noch ist die PowerShell nicht weit verbreitet (Noch verkaufen wir mehr Bücher zum WSH als zur PowerShell)Windows Server 2008 wird einen Schub bringen

Ausblick: PowerShell 2.0· Es gibt bereits eine CTP-Version!

· Graphical PowerShell (Editor)· Fernaufruf mit WS-MGMT· Asynchrone Befehlsausführung (Jobs)· Konsolenbasiertes Script Debugging · Eingeschränkte Shells, die nur bestimmte

Befehle/Skripte zulassen ("Restricted Runspaces")

· Ereignissystem, das über Änderungen in beliebigen Objekten informiert

· Verpacken von Skripten und zugehörigen Datendateien

· Verbesserung bei WMI, ADSI, u.v.m.

Links: Werkzeuge & ErweiterungenPowerShell 1.0

http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspxPowerShell Documentationhttp://www.microsoft.com/downloads/details.aspx?familyid=B4720B00-9A66-430F-BD56-EC48BFCA154F&displaylang=enPowerShell Community Extensions (PSCX)http://www.codeplex.com/PowerShellCXIT-Visions.de PowerShell Extensionshttp://www.it-visions.de/scripting/powershell/PowerShellCommandletExtensions.aspxPowerShell Gadgetshttp://www.powergadgets.com/PowerShellPlushttp://www.powershell.comPowerShell WMI Explorerhttp://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspxPowerShell Analyzerhttp://www.karlprosser.com/coder/?page_id=14PowerShell Helphttp://www.primalscript.com/freetools/defaultin.aspPowerShell Tabhttp://www.primalscript.com/freetools/defaultin.asp

Links: InformationenOffizielles Weblog des PowerShell-Teams: http://blogs.msdn.com/PowerShellPowerShell-Community-Website des Sprechers: http://www.powershell-doktor.deOffizielle PowerShell-Website: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspxSammlung von PowerShell-Scripts: http://www.microsoft.com/technet/scriptcenter/scripts/msh/default.mspx?mfr=true Websites mit Scripts: http://powershell.wiki.com/ und http://scripts.readify.netLink-Liste von PowerShell-Ressourcen: http://del.icio.us/powershellPowershell Live User Community: http://powershelllive.com

Mehr zur PowerShell oder .NET?Beratung, Schulungen (öffentlich und In-House), Workshops, Coaching, EntwicklungNächste PowerShell-Schulungen (Holger Schwichtenberg & Peter Monadjemi):

28.4.-30.4.2008   in Essen4.-6.6.2008   in Essen8.-10.10.2008 in Essen

Telefon 0201/7490-700hs@IT-Visions.de

Am Ende...

Danke für Ihre Aufmerksamkeit!

FRAGEN ?jetzt!!! …oder später unter www.IT-Visions.de/Foren

Download der Folien und Skripte:http://www.it-visions.de/v4991.aspx

© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.

The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after

the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Windows Server 2008weitere Ressourcen

Windows Server 2008 Tech Centerhttp://www.microsoft.com/germany/technet/prodtechnol/windowsserver/2008/default.mspx

Windows Server 2008 Webcasts:http://www.microsoft.com/germany/technet/webcasts/windowsserver2008.mspx

Windows Server 2008 Produktseite:http://www.microsoft.com/germany/windowsserver2008/default.mspx

Microsoft Virtualization:http://www.microsoft.com/virtualization/default.mspx

Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.