Die VHS Braunschweig führt ab dem 06. Mai 2010 eine Abendseminarserie zum Thema
"Powershell & Tools für Administratoren" durch. An dieser Stelle schönen Dank an den Veranstalter, der dieses Seminar aus dem Rahmenprogramm des PC Systembetreuers auch mit einer kleinen Teilnehmergruppe durchführen lässt - Thanx!
Hier die Termine unserer Abendveranstaltung:
Ort: Heydenstraße, Raum 2.01
Zeiten: Donnerstags, 19.00 - 21.15 Uhr ab dem 06.05.2010
Frühere Übungszeiten und Zugänge zum Raum nach Absprache mit der VHS BS werde ich an dieser Stelle kommentieren. Hier die Inhalte unseres Seminars ...
Ihr Trainer Joe Brandes
Do, 06.05.2010, 19.00 - 21.15 Uhr
- Orientierungsphase, Inhalte und Anregungen
Stichworte: Installations-DVD mit Treibern/Software ausrüsten (WAIK),
Sicherungstools Befehlszeile (robocopy, Ordnersynchronisation auch über das Netz)
Hinweis auf cobra-shop (spezielle SSL-SW für VHS Teilnehmer) - Arbeit mit eigens installierten Windows 7 Systemen auf Wechselplatten
- Gegenüberstellung: CMD vs. POWERSHELL
residente (ipconfig.exe) und transiente Befehle (dir)
dir-Befehl in powershell ist Alias, path zeigt Unterschied (Fehler in PS) - Erste Befehle:
cd (change directory)
cls (clear screen)
dir (directory anzeigen) - Powershell führt alle Befehle aus (inklusive Verzeichnis- und Befehlvervollständigungen!)
aktuell PS 2.0: in Win 7 und Server 2008 R2 enthalten
kann sonst als Download von MS nachinstalliert werden
für PS 2.0 muss idealer weise dot.net 2.0 und 3.5 vorhanden sein - Erste cmdlets (Commandlets):
Get-ChildItem
Get-Process
Get-Service
Get-ComputerRestorePoint (Admin-PS nötig)
Do, 20.05.2010, 19.00 - 21.15 Uhr
- Nachfrage Powershell 2.0 geklärt - nativ bei Win 7 und Server 2008 R2
Andere OS: Nachinstallationen durch Windows Management Framework
Anm.: bitte OS- und 32/64-Bit-Version beachten - hier folgt die MS-Quelle
Quelle(n): Windows Management-Framework (WinRM 2.0, Powershell 2.0, BITS 4.0) - Powershell-Session (Sitzung) erlaubt temporäre Änderungen:
$host.ui.rawui
$host.ui.rawui.ForegroundColor = "Yellow"
$host.ui.rawui.WindowTitle = "My Console" - Hinweis auf Unterscheidung "Pfade - PATH"
CMD: path (Befehl)
PS 2.0: $env:Path (Umgebungsvariable)
Beispiel path für PS 2.0 erweitern:
$env:Path += ";C:\Program Files\Windows NT\Accessories\"
jetzt funzt auch Aufruf von "wordpad" - Weitere Kommandos:
Get-Command (mit: -commandtype cmdlet; -verb get; -noun process)
Get-Help (siehe -full, -examples, -detailed)
Set-Location (als Alias auch dir - siehe "Get-Alias dir")
Out-File
Get-Member - Piping: (Beispiel - Achtung: Objektorientiert!)
dir | Sort-Object -property length, name
Get-Service | Where-Object {$_.status -eq "running"} | Out-File c:\temp\ausgabe.txt - Umleitungen: (Umlenkung des Standardausgabe-Kanals)
Get-Service > c:\temp\ausgabe2.txt
Hinweis: >> hängt Texte an bestehende Datei an
Do, 27.05.2010, 19.00 - 21.15 Uhr
- Lösung für temporäre Umgebung der Shell-Session: Profil-Skript!
- Rekap: Piping mit out-gridview (.Net 3.5 nötig)
Get-Service | Where-Object {$_.status -eq "running"} | Out-Gridview - Alias (siehe Get-Alias, Set-Alias) und
$env:Path (z.B.) nur Temporär - Get-PSProvider zeigt alle verfügbaren "Provider"
in Provider alias:
dir | Group-Object definition
dir alias: | Group-Object definition | Sort-Object name | Out-Gridview
dir alias: | Group-Object definition | Sort-Object count
ergibt schöne Auflistungen und Analysen!
Hitliste (count 6) ausführlich mit Get-Alias -definition remove-item - Provider diskutiert und ausprobiert
Set-Location env: (alias:, hkcu:, variable:, function:)
ah da sind die Variablen und Environment-Infos
$variable:PShome
$variable:PROFILE - set-alias d get-date (gilt nur für Shell-Session - ausprobieren)
export-alias -path .\skripts\aliase.txt
import-alias -path .\skripts\aliase.txt (-force unterbindet "Fehler" / erzwingt Übernahme) - Lösung: $PROFILE bzw. $variable:Profile
ist eine .ps1-Datei (Skripte der Powershell)
test-path $profile - Neue Objekte/Items erstellen (für $profile)
new-item -itemtype file test.txt
new-item -itemtype directory test - Super-Lösung für $PROFILE: (alles in einem)
New-Item -Path $PROFILE -type file -Force - Eintrag vornehmen in $PROFILE:
# Beispieleintrag ...
set-alias d get-date - Powershell öffnet mit Fehler wegen:
*.ps1 funzen nur mit gesetzter Policy!
get-executionpolicy
set-executionpolicy (benötigt Admin-Rechte)
=> die unterschiedlichen Modi diskutieren (Hilfen aufrufen)
insbesondere Hinweis auf die about_Execution_Policies Zusatzhilfen - Funktionen (interaktiv):
einführendes Beispiel in Befehlszeile:
function ping10 { ping -n 10 $args}
Aufruf z.B.: ping10 192.168.1.1 - Funktionen in der $PROFILE hinterlegen für ständige Nutzung
Special: (Funktion CDD für die Datei $PROFILE - dann können Sie sich das Tippen sparen)
# Beispiel cdd - Change Dir with Dialog function cdd { $shell = New-Object -comObject "Shell.Application" $options = 0x51 # Nur Dateisystem-Ordner $loc = $shell.BrowseForFolder(0, "Wohin soll es gehen?", $options) if($loc) {Set-Location $loc.Self.Path} }
Do, 03.06.2010, 19.00 - 21.15 Uhr
- Fragen / Rekapitulationen Funktion CDD mit $PROFILE
- Funktion mit mehreren Argumenten übergeben:
function ping10besser ([int]$a, [string]$b) { ping -n $a, $b }
Funktion löschen: (na klar: PSProvider function:)
rm function:\ping10besser - Powershell auf "4 Ebenen" oder "Was kann die PS alles?"
CMDLETS (Powershells feingetunte Spezialwerkzeuge!
WMI (Windows Management Interface)
Dot.Net Bibliotheken
COM (Component Object Model) - Powershell cmdlets (236) - Wiederholung / Zusammenfassung
Get-Command -commandtype cmdlet | Measure-Object
Object Orientiert (.EmailAdress)
im Gegensatz zu Text pattern RegExpresission
\b[A-Z0-9._%-]+@[A-Z0-9.-]+\[A-Z]{2,4}\b
Keine Programme (!) sondern .NET-Klassen für spezielle Aufgaben maßgeschneidert!
Syntax: Verb-Substantiv [-Parameter]
engl.: verb-noun; nicht case-sensitive - keine Groß-/Kleinschreibung - WMI
get-wmiobject Klasse
Beispiele WMI:
get-wmiobject win32_processor
get-wmiobject win32_networkadapter
get-wmiobject win32_account
get-wmiobject -list (statt der MSDN Dokumentation)
get-wmiobject -list | measure-object (nur Standard Namensraum Root\CIMV2)
get-WmiObject -list | Where-Object {$_.Name -match '^Win32.*'}
get-wmiobject -list -namespace root\securitycenter
letztendlich dann z.B. in Win7 über 7000 Klassen (und das ohne Zusatzprodukte wie Office!) - Dot.NET
$o = new-object Klasse
[Klasse]::Name (hier: statische Klassen - keine Erzeugung)
Beispiele 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
$di = new-object System.IO.DirectoryInfo($PSHOME)
$di.CreationTime
statisch:
[System.Environment]::UserName
[System.Environment]::MachineName
statisch mit Grafikausgabe/Forms:
[System.Reflection.Assembly]::LoadWithPartialName("System.windows.forms")
[System.Windows.Forms.MessageBox]::Show("Wirklich löschen?", "Nachfrage", [System.Windows.Forms.Messageboxbuttons]::YesNo) - COM
$wsh = new-object -comobject "Klasse"
Beispiele COM
$objShell = new-object -comobject "Shell.Application"
$objShell | get-member
$objShell.cascadeWindows()
$objShell.tilehorizontally()
$objShell.ToggleDesktop()
siehe auch Code für CDD (Change Directory with Dialog) - Erweiterungen / Extensions
Powershell Community Extensions (PSCX) - pscx.codeplex.com
Download bitte erst über Rechte Maus "entsichern"
das entpackte Archiv für alle User der Maschine nach $PSHOME\Modules kopieren
Übersicht über verfügbare Module: Get-Module -list
Laden von Modulen: Import-Module pscx
Dauerhaft verfügbar: in $PROFILE eintragen
Donnerstag, 10.06.2010, 19.00 - 21.15 Uhr
- Wiederholung der Implementierung der PSCX auf den Win7-Domänen-Profilen
- Verfügbarkeit einer Domäne ermöglicht Remote-Zugriffe mittels
Get-Wmiobject Win32_Bios -ComputerName vbox-dc01 -credential vboxdom\tnadmin
auch andere Aufrufe/Cmdlets sind hierzu in der Lage - Shell-Remoting ermöglichen auf Rechner mittels Enable-PSRemoting
Es werden stufenweise die Windows Remote Management (WinRM) Funktionen und Dienste aktiviert und alle notwendigen Konfigurationen und Firewall-Einstellungen vorgenommen - Einleitung einer Remote-Sitzung: Enter-PSSession vbox-dc01 -credential vboxdom\tnadmin
- Hilfen insbesondere über spezielle Hilfen zur Verfügung:
about_pssession, about_remote*, about_session_configurations - Auf Server interessant: Module ActiveDirectory
Übersicht über verfügbare Module: Get-Modul -list
Bereitstellen mit Import-Modul ActiveDirectory
Testen mit Get-PSProvider
Wechseln zum neuen Provider: Set-Location AD: - kleine Fingerübung in der neuen ISE
kleine Skriptbeispiele mit Soundausgabe und Co
Donnerstag, 17.06.2010, 19.00 - 21.15 Uhr
- Rekapitulationen und TN-Fragen
- Bereitstellung der Unterlagen, E-Books und Videos zum Thema Powershell;
alles abgesprochen und mit Dozenten-PC für Teilnehmer verteilt - robocopy - MS Allround-Tool für Sicherungen und Co über die Befehlszeile
Graphical User Interfaces (GUIs) erleichtern die Handhabung der vielen Schalter und Konfigurationsmöglichkeiten
Empfehlungen:
faRoboGui (Link) - einfach ausführbare Datei mit guter Übersicht und Handling
RichCopy (Link) - von MS unterstützt, umfangreiche Installation notwendig
Anleitungen / Videos (Link) von Tim Bormann (MS Blogger) - Sysinternals (heute bei Microsoft unter www.microsoft.com/sysinternals - Link)
Highlights der Suite: AD-Tools, BGInfo, ProcessExplorer, AutoRuns - Live-CDs / Rettungen abseits von Windows-Installationen
Knoppix, Ultimate Boot CD, GRML, Ultimate Boot4Win, Win PE
Übersicht (hier im PC Sys Portal - anderes Abendsem) - TN-Bescheinigung und Feedbacks
Ich bedanke mich ausdrücklich für Ihr freundliches Feedback und Ihre Anregungen. Zukünftige Seminare werden entsprechend ein anderes Zeitraster (18.00 - 21.15 Uhr) haben, um den Abend effektiver nutzen zu können.
Ihr Trainer Joe Brandes