Die ersten Computer hatten nicht mal Bildschirme, geschweige
denn Grafik ENIAC, Quelle: Wikipedia
Folie 3
Nach Druckern (eher gesteuerten Schreibmaschinen) kamen die
Bildschirme
Folie 4
Programme zeigten nur Text an Auch die Steuerung des
Betriebssystems geschah ausschlielich per Tastatur
Folie 5
Gewohnt! Die Maus gabs einfach noch nicht. Einfach! Es gab
nicht viel, was man tun konnte. Also auch wenig zu lernen.
Kompliziert! Mehr oder weniger systematisch je nach Hersteller und
System Die Kommandozeile konnte mehr und mehr
Folie 6
Anwendungsprogramme, auch Spiele:
Folie 7
Befehl Jeder ein bisschen anders Immer wieder einzutippen Keine
Hilfe o. . Batch Mehrere Befehle zu einer Stapelverarbeitungsdatei
zusammenfassen Erleichtert Routinearbeiten Skript Ablaufsteuerung:
Fallunterscheidungen, Wiederholungen Der nchste Befehl kann davon
abhngen, ob der vorherige funktionierte Pipe Dank Unix (1970):
Daten knnen durch mehrere Befehle durchgeleitet werden Jeder Befehl
macht nur ein bisschen was dran Baukastensystem
Folie 8
Scripts sind enorm wichtig fr die effiziente Verwaltung groer
Systeme Ntzlich und interessant auch fr kleine! Es gibt viele
verschiedene Shells Scriptsysteme je nach Betriebssysteme
BetriebssystemBeispiele Unix/Linuxsh, csh, ksh, MS-DOSCOMMAND.COM
WindowsCMD.EXE, PowerShell Andere BetriebssystemeViele!
Folie 9
Was? Die Microsoft Windows PowerShell 2.0 Warum? Sehr
systematisch - leicht zu erlernen Sehr modern und extrem mchtig
(Das wurde aber auch Zeit, Microsoft!) Und die anderen? Kann man
auch erlernen, wenn man mchte Erst recht, wenn man mal eine gesehen
hat
Folie 10
Text alleine oder Text in einem Fenster letztlich egal
Folie 11
Befehle nennen sich CommandLets Grundstzlich einheitlich:
Verb-Objekt Get- liest irgendetwas aus Da geht also nichts kaputt
Get-ChildItemGibt Verzeichnisinhalt aus Get-ContentGibt Dateiinhalt
aus Get-DateGibt Datum/Uhrzeit aus Get-HelpGibt Hilfe aus
Get-CommandGibt alle mglichen Befehle aus
Folie 12
Befehle knnen Parameter bekommen Damit kann man Details steuern
Get-ChildItem *.txt Damit klar ist, welche Dinge wir sehen wollen
Get-Content c:\boot.ini Damit klar ist, welche Datei wir ausgeben
wollen Befehle haben Namen Get-ChildItem -Path *.txt Get-Content
-Path *.txt Get-ChildItem -?
Folie 13
Hilfe gibts mit -? als Parameter Out-Printer -? Get-Help gibt
Hilfe Get-Help Format-Table -Full Get-Member liefert Informationen
ber Objekte Die wichtigsten Befehle sind also Get-Help Get-Command
Get-Member (spter)
Folie 14
Fr Faule und Gewohnheitstiere: Aliase! Get-ChildItem = gci =
dir = ls Get-Help = help Format-Table = ft Format-List = fl
Out-Host -Paging = more Woher wei man das? Get-Alias
Tab-Completion! get-c tab Get-ChildItem format tab tab tab
Format-List
PowerShell liefert nicht Text, sondern Objekte Datenpakete mit
Aufklebern: Eigenschaften Ich (eine Datei) habe eine Eigenschaft
Name, und das ist ein Stck Text. Ich (eine Datei) habe eine
Eigenschaft Length, und das ist eine Zahl. Eingebauter
Werkzeugkasten: Methoden Ich (ein Computer) kenne eine Methode
Reboot() Fr Fortgeschrittene Get-Member listet die Eigenschaften
und Methoden der Objekte auf
Folie 18
Der senkrechte Strich zwischen zwei Befehlen leitet die Objekte
von einem zum nchsten weiter Befehl1 | Befehl2 | Befehl3 | Befehl4
Jeder Befehl kann irgendwas mit den Daten machen, und irgendwas
ausgeben Das kommt dann als Eingabe in den nchsten Befehl Wenn beim
letzten Befehl etwas herauskommt, wird es angezeigt Das knnen viele
andere Shells auch aber eben nur mit Text, nicht mit sich selbst
beschreibenden Objekten
Folie 19
Sort-Object sortiert Objekte nach ihren Eigenschaften
Select-Object lsst nur bestimmte Eigenschaften durch (kann auch
neue Eigenschaften bilden) Where-Object filtert Objekte nach
irgendwelchen Bedingungen lsst nur die erwnschten durch
ForEach-Object tut irgendetwas mit jedem ankommenden Objekt
Zwei Mal dasselbe verarbeiten geht das nicht einfacher? Doch
(natrlich): Mit Variablen Variablen speichern Objekte Fangen mit $
an und haben einen Namen $daten = Get-ChildItem -Filter *.txt
Recurse | Where-Object {$_.Length -lt 10000} | Sort-Object Length
$daten | Export-Csv Datei.csv $daten | Out-GridView $daten |
Select-Object -First 5 | Out-Printer $_ in Where-Object,
ForEach-Object usw. enthlt das jeweilige Objekt in der Pipe
Folie 22
Es werden oft dieselben Dinge bentigt Dafr gibt es
Scriptdateien In der PowerShell enden die auf.ps1 Man muss sie aber
erst einschalten Aus Sicherheitsgrnden Set-ExecutionPolicy
RemoteSigned Bewirkt, dass Scripts vom lokalen Computer auch ohne
digitale Signatur ausgefhrt werden Das kann nur ein Administrator
einstellen
Folie 23
Von was fr Typen von Dateien habe ich wie viele? Get-ChildItem
-Recurse | Group-Object Extension | Sort-Object Count -Descending |
Select-Object Name, Count -First 10 Z. B. als
Get-ExtensionStatistic.ps1 speichern Aufrufbar nur mit
ausdrcklicher Verzeichnisangabe.\Get-ExtensionStatistics.ps1 (aus
dem aktuellen Verzeichnis)
Folie 24
Ntzliche CommandLets: Copy-Item kopiert Dateien (und anderes)
Set-Location wechselt das aktuelle Verzeichnis Remove-Item lscht
Vorsicht! Datenverlust! Erstmal mit -WhatIf oder -Confirm
ausprobieren! Group-Object stellt Objekte in Gruppen mit gleichen
Eigenschaftswerten zusammen Measure-Object berechnet: zhlt,
summiert Get-ChildItem | Measure-Object Length -Sum
Folie 25
PowerShell ist.NET auf der Kommandozeile.NET kann dynamisch
DLLs nachladen Also kann PowerShell das auch: Siehe auch:
http://www.ct-systeme.com/sf/tools/publisher/Seiten/Kommandozeile.aspx
Siehe auch:
http://www.ct-systeme.com/sf/tools/publisher/Seiten/Kommandozeile.aspx
Folie 26
Wir haben gerade mal ganz leicht an der Oberflche gekratzt!
PowerShell kann noch viel mehr: Computer im Netzwerk finden, auf
denen nur noch wenig Platz frei ist Zugriffsrechte einstellen
Datenbanken abfragen E-Mail senden Dateien von einem Webserver
herunterladen Typ der Grafikkarte feststellen Software installieren
Und Knigreich Euphoria spielen
http://www.ct-systeme.com/Lists/Downloads/DispForm.aspx?ID=46