Do, 19.11.2009, 19.00 - 21.15 Uhr
- Pipelining (oder auch kurz Piping)
Aneinanderhängen von Shellaufrufen, Ausgaben werden weitergegeben
hier das Besondere: Objekte! (siehe hier get-member)
Beispiel:
get-service | where-object{$_.status -eq "running"} | out-file c:\windows\temp\lfddienste.txt - spezielle Objekte:
get-process | file-table name, company, product
hier: company als ScriptProperty - Übungen Pipelining mit besonderen Objekt-Behandlungen
get-service | sort-object status
get-service | group-object status
get-service | out-gridview
Anm.: letzteres cmdlet out-gridview nur PS 2.0 (und auch .NET 3.5 nötig) - Übungen mit 3* Wordpad (start wordpad)
get-process wordpad
get-process wordpad | sort-object ws -desc
get-process wordpad | sort-object ws -desc | select-object -first 1 | get-member (Anm.:immer noch NET-Klassen)
get-process wordpad | sort-object ws -desc | select-object -first 1 | foreach-object {$_.kill()}
get-process wordpad | sort-object ws -desc | select-object -first 1 | stop-process - Provider für die Powershell
Filesystem, Registry, Zertifikatsspeicher, Alias, Environment, Function Variablen (Standard-Provider)
get-PSProvider
set-location HKLM: - Erweiterung der PS mit weiteren Schnittstellen (WMI, .NET, COM)
commandlets decken nur Teil der OS-Aufrufsmöglichkeiten und Techniken ab!
Zusätzliche Aufrufe mittels Get-WmiObject und New-Object für
WMI (Windows Management Interface)
get-wmiobject Klasse
.NET (Dot.NET-Bibliotheken)
$o = new-object Klasse
[Klasse]::Name (hier: statische Klassen - keine Erzeugung)
COM (Component Object Model)
$wsh = new-object -com "Klasse" - Beispiele WMI:
get-wmiobject win32_processor
get-wmiobject win32_networkadapter
get-wmiobject win32_account
get-wmiobject -list (Anm.: statt der MSDN Dokumentation)
get-wmiobject -list | measure-object (Anm.: nur Standard Namensraum Root\CIMV2)
get-wmiobject -list -namespace root\securitycenter
z.B. in Win7 über 7000 Klassen (und das ohne Zusatzprodukte wie Office) - Beispiel .NET:
Anm.: .Net 3.5 ca. 10.000 Klassen plus Zusatz-Server SQL, ...
$wc = new-object System.Net.WebClient
$wc | get-member
$wc.DownloadString("http://www.vhs-braunschweig.de")
$wc.DownloadString("http://www.vhs-braunschweig.de") | out-file c:\temp\website.htm
statische Klassen:
[System.Environment]::UserName
[System.Environment]::MachineName - Neue Objekt erstellen:
new-item -itemtype file test.txt
new-item -itemtype directory test - $PROFILE
aufrufen und checken mit
test-path $profile (Anm.: ergibt TRUE oder FALSE)
in einem Rutsch erstellen: New-Item -Path $PROFILE -type file -Force
Achtung: bei Versuch $profile zu nutzen kommt Fehlermeldung weil: - ExecutionPolicy muss konfiguriert werden
Skripte *.ps1 dürfen nur bei ausreichender Richtlinie ausgeführt werden!
Befehle: Get-ExecutionPolicy, Set-ExecutionPolicy


