380 likes | 738 Views
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. Über den Sprecher : Dr. Holger Schwichtenberg.
E N D
Download der Folien und Skripte:http://www.it-visions.de/v4991.aspx Windows PowerShell{für Administratoren} Dr. Holger SchwichtenbergSoftwarearchitekt, Berater, Fachjournalistwww.IT-Visions.de Version 1.3b/21.02.08
Über den Sprecher : Dr. Holger Schwichtenberg • Dr. rer. pol. Diplom-Wirtschaftsinformatiker • MVP, .NET Code Wise Member, MCSD • seit 1996 Softwareentwicklung mit WindowsCOM/.NET • Heute: Firma www.IT-Visions.de (Sitz: Essen) • 50%: Architektur, Design, Entwicklung • 50%: Beratung, Schulungen, Coaching, Fachartikel, Fachbücher, Konferenzvorträge • FachjournalistiX, DOTNETpro, Computer Zeitung, Windows IT Pro, PC Magazin, ObjektSpectrum, MSDN Online, u.a. • BuchautorAddison-Wesley, Microsoft Press, WEKA Media • Vortragendernationale und internationale Fachkonferenzen (TechEd, OOP, ADC, BASTA, IT Forum, STC, WI, Net.Object Days, etc.) • Kontakths@IT-Visions.de • Community Website http://www.dotnetframework.de • Webloghttp://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), …
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
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
NEU: PowerShell Plus 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 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-wmiobjectwin32_useraccount • Beispiel (.NET): $Url = "http://www.windows-scripting.com" $wclient = new-objectSystem.Net.WebClient $html = $wclient.DownloadString($Url)
WMI-Beispiele • Name und freie Bytes auf allen LaufwerkenGet-Wmiobject Win32_logicaldisk | Select-Object deviceid,freespace • Name und Domain der Benutzerkonten, deren Kennwort niemals verfälltGet-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/Softwarecdhklm:\software • Kurzform für: Set-Location hklm:\software • Auflisten der Unterschlüssel des aktuellen SchlüsselsDir • Kurzform für: Get-Childitem • Erzeugen eines Unterschlüssels mit Namen „IT-Visions“md IT-Visions • Erzeugen eines Unterschlüssels mit einem StandardwertNew-Item -Name "Inhaber" -Value "Dr. Holger Schwichtenberg" -type String • Erzeuge WertNew-Itemproperty -path "hklm:\software\www.it-visions.de" -name "Inhaber" -value "Dr. Holger Schwichtenberg" -type string • Lese WerteGet-ItemProperty
Skripte - Kontrollstrukturen • $Variable • if (Bedingung) {…} else {…} • switch ($var) { Wert: {…} } • while(Bedingung) { … } • do { … } while (Bedingung) • do { … } until (Bedingung) • foreach ($var in $menge) {…} • functionname {…} • 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 –commandSkriptname.PowerShell
Execution Policies 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} Demos Download des Codes:http://www.it-visions.de/V4991.aspx Dateisystem: Ordnergrößenermitteln (rekursiv) Dateisystem: ACL verändern Active Directory: Benutzeranlegen (zweiVarianten) EineDatenbankauslesen (und Benutzeranlegen) IIS: EineMenge von IIS-Websites anlegen
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.0http://www.microsoft.com/technet/scriptcenter/topics/msh/download.mspx • PowerShell Documentationhttp://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 Extensionshttp://www.it-visions.de/scripting/powershell/PowerShellCommandletExtensions.aspx • PowerShell Gadgetshttp://www.powergadgets.com/ • PowerShellPlushttp://www.powershell.com • PowerShell WMI Explorerhttp://thepowershellguy.com/blogs/posh/archive/2007/03/22/powershell-wmi-explorer-part-1.aspx • PowerShell Analyzerhttp://www.karlprosser.com/coder/?page_id=14 • PowerShell Helphttp://www.primalscript.com/freetools/defaultin.asp • PowerShell Tabhttp://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
© 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
AsktheExperts Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.