Windows PowerShell { für Administratoren} 3/28/2017 8:11 PM Download der Folien und Skripte: http://www.it-visions.de/v4991.aspx Windows PowerShell { für Administratoren} Dr. Holger Schwichtenberg Softwarearchitekt, Berater, Fachjournalist www.IT-Visions.de Version 1.3b/21.02.08 © 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.
Abstract Das DOS-Kommandozeilenfenster war nicht mächtig genug, der Windows Script Host (WSH) war oft zu kompliziert. Mit der Microsoft PowerShell steht für Windows XP, Windows Server 2003, Windows Vista und Windows Server 2008 eine neue Kommandozeilenshell zur Verfügung, die auf intuitive Weise sowohl interaktive Systemadministration als auch Scripting erlaubt. In Windows Server 2008 ist die PowerShell zum ersten Mal von Anfang an installiert. Die PowerShell ist objektorientiert und basiert auf dem .NET Framework. Viele Details von .NET werden aber durch eine einfache Syntax auf Basis von Commandlets und Pipelines vor dem Administrator verborgen. Dennoch kann er die ganze Macht der Windows Management Instrumentation (WMI) aus der PowerShell heraus nutzen. Bei Bedarf kann der Administrator auch tiefer einsteigen und dann neben rund 10000 .NET-Klassen auch die unzähligen COM-Klassen (die er schon vom WSH kennt) direkt nutzen. Dieser Vortrag gibt an vielen praktischen Beispielen zur Administration von Windows Server 2008 einen fundierten Überblick über die Macht der PowerShell.
Über den Sprecher : Dr. Holger Schwichtenberg Dr. rer. pol. Diplom-Wirtschaftsinformatiker MVP, .NET Code Wise Member, MCSD seit 1996 Softwareentwicklung mit Windows COM/.NET Heute: Firma www.IT-Visions.de (Sitz: Essen) 50%: Architektur, Design, Entwicklung 50%: 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 Media Vortragender nationale und internationale Fachkonferenzen (TechEd, OOP, ADC, BASTA, IT Forum, STC, WI, Net.Object Days, etc.) Kontakt hs@IT-Visions.de Community Website http://www.dotnetframework.de Weblog http://www.dotnet-doktor.de
Bücher zur PowerShell 150 Seiten zur PowerShell 16. März 2007 18. Oktober 2007
Wer sind Sie? Windows Administratoren (oder Entwickler) Erfahrung mit Batch, WSH, ADSI, WMI Keine Grundkenntnisse in PowerShell (dies ist ein Einführungsvortrag „Level 200“ !)
Inhalt Die wichtigsten Fakten zur PowerShell Motivation: WSH versus PowerShell Grundkonzepte der PowerShell Commandlets Objektorientiertes Pipelining Anbindung an .NET, COM und WMI Einheitliches Navigationsparadigma PowerShell Skript Language PowerShell-Skripte Anwendungsbeispiele Prozesse, Dienste, Dateisystem, Ereignisprotokolle Registry ACLs Active Directory IIS 7.0 Datenbankzugriff Ausblick
GUI versus CLI GUI CLI CLI GUI Linux/Unix Windows
Die wichtigsten Fakten zur PowerShell Interaktive Systemadministration + Scripting Nachfolger von DOS-Fenster und WSH Basis: .NET 2.0 (läuft aber auch mit .NET 3.x!) Option in W08, kostenfreies Add-On für XP, 2003, Vista Zugriff auf .NET, COM, WMI, ADSI, XML, u.v.m. Einzelbefehle: Commandlets (.NET-Klassen) Befehlskombination: Objekt-Pipelining Skripte: PowerShell Skript Language (PSL) Mengen: Navigation Provider Eigene Commandlets (Skript oder .NET) Hosting der PowerShell in eigenen .NET-Anwendungen PowerShell-fähige Produkte: Exchange 2007, System Center Virtual Machine Manager (SCVMM), …
Installation in Windows 2008
Motivation: Softwareinventar Erstelle eine Inventardatei (CSV) Alle installierten Anwendungen Filter auf Hersteller Von mehreren Computerm In eine CSV-Datei Eingabedatei: Computernamen.txt Ausgabedatei: Softwareinventar.csv
Lösung mit dem WSH/VBScript
Lösung mit der PowerShell
Einflussfaktoren
Commandlets & andere Befehle DEMO Commandlets (Cmdlets) Allgemeine Syntax: Verb-Substantiv [-Parameterliste] Beispiele: get-process, get-service, get-location get-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.
Objektorientiertes Pipelining Keine 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, WorkingSet get-childitem c:\daten -filter *.dll | where-object {$_.Length -gt 40000} | sort-object Length | format-list
Pipelining-Commandlets Ausgaben: Format-Table, Format-List, Format-Wide Filtern: where-object, select-object –first / -last "Kastrieren": select-object (Abschneiden von Attributen der Objekte) Sortieren: sort-object Gruppieren: group-object Sequentielle Verarbeitung: foreach-object Pipeline analysieren: get-member Berechnungen: measure-object Variablen in Pipelines: $x = get-process … $x | … Zusammenfassung: $( get-process ; get-service ) DEMO
PowerShell Pipeline Processor
NEU: PowerShell Plus Kommandozeile mit IntelliSense DEMO Kommandozeile mit IntelliSense Editor mit IntelliSense und Debugger http://www.powershell.com 79 Euro / kostenlos für nicht-kommerziellen Einsatz
Verlosung… Drei Vollversionen der PowerShell Plus Im Wert von 79 Euro an die drei Personen die 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) DEMO Instanziieren, Methoden, Attribute, (Abfragen) .NET $d= new-object System.DateTime(2004, 12,1 [System.Environment]::ComputerName COM $wsh = new-object –com "WScript.Shell" WMI get-wmiobject win32_useraccount Beispiel (.NET): $Url = "http://www.windows-scripting.com" $wclient = new-object System.Net.WebClient $html = $wclient.DownloadString($Url)
WMI-Beispiele Name und freie Bytes auf allen Laufwerken Get-Wmiobject Win32_logicaldisk | Select-Object deviceid,freespace Name und Domain der Benutzerkonten, deren Kennwort niemals verfällt Get-Wmiobject Win32_account | Where-Object {$_.Kennwortexpires -eq 0 } | Select-Object Name,Domain Alle Netzwerkadapter mit TCP/IP (Filter) Get-Wmiobject Win32_NetworkAdapterConfiguration -Filter "IPEnabled=true" | select Description,IPAddress Ausgewä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 Provider Unterschiedliche Datenmengen: hierarchisch/flach Gleiche Verben: get, set, new, remove, etc. Get-PSDrive Menge der Provider und Menge der Laufwerke ist erweiterbar Verfügbare Mengen Registry Umgebungsvariablen Aliase Zertifikate Variablen Active Directory/LDAP PSCX Demnächst: SQL Server
Registry-Beispiel DEMO Navigation zu HKEY_LOCAL_MACHINE/Software cd hklm:\software Kurzform für: Set-Location hklm:\software Auflisten der Unterschlüssel des aktuellen Schlüssels Dir Kurzform für: Get-Childitem Erzeugen eines Unterschlüssels mit Namen „IT-Visions“ md IT-Visions Erzeugen eines Unterschlüssels mit einem Standardwert New-Item -Name "Inhaber" -Value "Dr. Holger Schwichtenberg" -type String Erzeuge Wert New-Itemproperty -path "hklm:\software\www.it-visions.de" -name "Inhaber" -value "Dr. Holger Schwichtenberg" -type string Lese Werte Get-ItemProperty
Skripte - Kontrollstrukturen $Variable if (Bedingung) {…} else {…} switch ($var) { Wert: {…} } while(Bedingung) { … } do { … } while (Bedingung) do { … } until (Bedingung) foreach ($var in $menge) {…} function name {…} return trap Fehlerklasse { … } else { … } throw "Fehlertext" throw Fehlerklasse Exit # Kommentar
Skriptdateien Textdateien Dateierweiterung .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 oder Invoke-Expression Skriptname.ps1 Außerhalb der PowerShell: PowerShell Skriptname.PowerShell PowerShell –command Skriptname.PowerShell
Beispiel
Execution Policies Restricted: keine Skripte (STANDARDEINSTELLUNG!) DEMO Restricted: keine Skripte (STANDARDEINSTELLUNG!) AllSigned: nur signierte Skripte, signierte Skripte von nicht-vertrauten Quellen auf Nachfrage RemoteSigned: Signatur nur für Skripte aus dem Internet (via Browser, Outlook, Messenger) Unrestricted: alle Skripte laufen
Skripte signieren makecert.exe dir cert: ## sign-file.PowerShell ## Sign a file param([string] $file=$(throw "Please specify a filename.")) $cert = @(get-childitem cert:\CurrentUser\My -codesigning)[0] set-authenticodeSignature $file $cert
{ Anwendungsbeispiele} 3/28/2017 8:11 PM { Anwendungsbeispiele} Demos Download des Codes: http://www.it-visions.de/V4991.aspx 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 © 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.
Fazit Intuition Prägnanz Typsicherheit 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 & Erweiterungen PowerShell 1.0 http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx PowerShell Documentation http://www.microsoft.com/downloads/details.aspx?familyid=B4720B00-9A66-430F-BD56-EC48BFCA154F&displaylang=en PowerShell Community Extensions (PSCX) http://www.codeplex.com/PowerShellCX IT-Visions.de PowerShell Extensions http://www.it-visions.de/scripting/powershell/PowerShellCommandletExtensions.aspx PowerShell Gadgets http://www.powergadgets.com/ PowerShellPlus http://www.powershell.com PowerShell WMI Explorer http://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspx PowerShell Analyzer http://www.karlprosser.com/coder/?page_id=14 PowerShell Help http://www.primalscript.com/freetools/defaultin.asp PowerShell Tab http://www.primalscript.com/freetools/defaultin.asp
Links: Informationen Offizielles Weblog des PowerShell-Teams: http://blogs.msdn.com/PowerShell PowerShell-Community-Website des Sprechers: http://www.powershell-doktor.de Offizielle PowerShell-Website: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx Sammlung 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.net Link-Liste von PowerShell-Ressourcen: http://del.icio.us/powershell Powershell Live User Community: http://powershelllive.com
Mehr zur PowerShell oder .NET? Beratung, Schulungen (öffentlich und In-House), Workshops, Coaching, Entwicklung Nächste PowerShell-Schulungen (Holger Schwichtenberg & Peter Monadjemi): 28.4.-30.4.2008 in Essen 4.-6.6.2008 in Essen 8.-10.10.2008 in Essen Telefon 0201/7490-700 hs@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
3/28/2017 8:11 PM © 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. © 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 2008 weitere Ressourcen 3/28/2017 8:11 PM Windows Server 2008 weitere Ressourcen Windows Server 2008 Tech Center http://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 © 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.
Ask the Experts Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.