Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Aldrich Heitzmann Geändert vor über 11 Jahren
1
.NET Users Group Karlsruhe 26.04.2007
2
Worum gehts? Goodby cmd.exe (ok ok, sie bleibt noch ein bisschen) Die Eingabeaufforderung erhält endlich einen würdigen Nachfolger Wenn schon, dann richtig: Es gibt nicht nur Neues gegenüber cmd.exe, sondern viel Neuartiges PowerShell (ehemals Monad) ist strategisch für Microsoft Neue Serveranwendungen werden PowerShell- scriptfähig Z. B. Exchange 2007, Virtual Server 2007
3
Wenn man eine Shell bauen darf Was muss eine Shell einfach drauf haben, wenn sie sich Shell nennen will? Alles Bewährte Pipes, Ein-/Ausgabeumleitung Richtiges Scripting, Ablaufsteuerung Und was hätten wir gerne? Neue Ideen, größere Mächtigkeit Einheitliche Befehlsstruktur Sicherheit
4
Der #1 Gag überhaupt PowerShell ist vollständig.NET 2.0-basiert Wäre ja zu erwarten… aber: Pipes reichen.NET-Objekte durch! Variablen halten.NET-Objekte! Einige Konsequenzen: Formatierte Ausgabe! Liste, Tabelle, CSV, XML… Filtern, Sortieren und sogar Gruppieren nach.NET-Eigenschaften
5
Was ist ein Befehl? Befehle gibts nicht mehr, da sagt man jetzt CmdLet dafür ;-) CmdLets sind.NET-Klassen, abgeleitet von einer Basisklasse PowerShell nimmt CmdLets Arbeit ab Argumente parsen, prüfen und ggf. Fehlermeldungen erzeugen CmdLets bekommen.NET-Objekte und geben.NET-Objekte aus
6
Einheitliche Befehlsstruktur CmdLets werden immer durch die Kombination Verb-Objekt aufgerufen Get-ChildItem,, Get-WmiObject, Format-Table, Out-Printer, Group-Object, Export-Csv, … Wenige Verben, viele Objekte Es gibt Aliase Get-ChildItem = gci = dir = ls Vordefinierte und selbst definierte Auch die Parametersyntax ist einheitlich Sie wird von der Shell geparst, nicht vom CmdLet!
7
Nu zeig doch endlich… Demo!
8
Wie findet man was? Wer suchet…… der findet Welche Befehle gibt es?Get-Command Welche Methoden und Eigenschaften hat dieses Objekt? Get-Member, Get-Member -static Hilfe zu einem BefehlParameter -? oder Get-Help Welche Aliase sind definiert?Get-Alias Welche Funktionen sind definiert?Get-ChildItem Function: Welche Provider gibt es?Get-PSProvider Hä? Provider? Wasn das nu wieder?Siehe nächste Folie ;-)
9
Gag #2: Provider! Provider liefern PowerShell-Laufwerke Ja, A:, C: und D: nebst Kollegen sind alle noch da Aber jetzt gibt es auch Laufwerke namens… Alias:Enthält alle Aliase Cert:Enthält den Zertifikatsspeicher Env:Enthält das Environment Function:Enthält alle per PowerShell- Scriptsprache definierten Funktionen HKCU: und HKLM:Enthält die Registry Variable:Enthält alle Variablen
10
Mit cd, äh, Set- Location in die Registry? Ja! Demo!
11
Des Kaisers neue Kleider PowerShell kann man anpassen Schlüssel dazu sind Profile Profile sind Textdateien Gibts global auf der Maschine Kanns geben pro User Ganz extrem per XML-Konfigurationsdateien Variable $profile enthält Pfad zum eigenen Profil Erstmaliges Anlegen mit New-Item $profile –force Editieren mit notepad $profile (yeah!) Standardmäßig nicht zugelassen – SD³
12
Ja wie, Scripte gehen nicht? Secure by Design, Deployment, Default hat Folgen Ausführung aus lokalem Verzeichnis nur via.\Befehl Wirkt eingeschleusten Virus-notepad.exe entgegen Scripterweiterung.ps1 ist nicht mit PowerShell verknüpft Nix da mit Doppelkick auf Script! Scripts sind standardmäßig aus Erst durch Set-ExecutionPolicy aktivierbar Das darf ein normaler User gar nicht einstellen
13
Gag #3: Edel-Bauklötze Get-ChildItem, New-Item, Remove-Item gehen auf jedem PowerShell-Laufwerk Where-Object, Sort-Object, Group-Object filtern, sortieren, gruppieren nach egal was ForEach-Object führt Befehl/Script auf jedem Objekt aus $variable = @{} erzeugt eine Hashtable Select-Object gibt nur bestimmte Eigenschaften, nur eindeutige oder die ersten/letzten n Objekte weiter Add-Member fügt neue Eigenschaften hinzu!
14
Was kann man damit machen? Demo!
15
Gag #4: Zugriff aufs.NET Framework (12345).ToString("x") $extension = [IO.Path]::GetExtension($path) $r = New-Object System.Random; $r.Next $Voice = New-Object -comObject SAPI.SPVoice; $Voice.Speak("Hello, world!") Und: Beliebige.NET DLLs laden!
16
Gag #5: Lad doch, was Du willst! [System.Reflection.Assembly]::LoadFile($My AssemblyPath) Erlaubt Zugriff auf Objektmodelle, die in Form einer.NET DLL vorliegen! Beispiele: SQL Server 2005 DMO SF ft Community Publisher (Demo!)
17
Gag #6: Erweiterbarkeit Es gibt ein SDK zur PowerShell Man kann eigene CmdLets, Provider usw. bauen Exchange 2007 und Virtual Server 2007 Management machen genau das Mehrere Community-Projekte machen dasselbe
18
Kritik Für eine Version 1.0 schick, aber da fehlt noch was… Komfort: Keine Script-IDE, kein zeitgemäßes Debugging Community liefert mehrere Alternativen Features Beispiel: Komfortabler ADSI-Zugriff war in Beta, ist aber rausgefallen Auch hier hat die Community was zu bieten Manchmal noch nicht zu Ende gedacht Beispiel: Get-Service liefert Startmodus nicht Dann nehmen wir halt gleich Get-WmiObject Win32_Service Version 2.0 wird bestimmt noch besser ;-)
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.