PowerShell für Adminsistratoren
An diversen Stelle der MSXFAQ werden Hinweise zu PowerShell mit dem Icon gekennzeichnet.
Beachten Sie dazu auch meine Seite PowerShell Beispiele im Bereich Programmieren mit Exchange
WinRM und PowerShell 2 gehören zusammen und sind bei Windows 7 und Windows 2008 R2 Server per Default eingebaut. Welche Version installiert ist, bekommen Sie mit "GET-HOST" heraus.
PowerShell 2.0 Download für Windows XP SP2, 2003 SP2,
2008 und Vista SP1
968929 Windows Management-Frameworks (Windows PowerShell 2.0, WinRM 2.0 und BITS
4.0)
E-Book zu PowerShell
https://blogs.technet.com/chitpro-de/archive/2007/05/10/english-version-of-windows-PowerShell-course-book-available-for-download.aspx
https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=adf74b41-ae6a-42f4-8445-db39ecabb8b3&lcid=2055&fu=http://download.microsoft.com/download/a/9/4/a94270c7-ed16-4c72-8280-658c66315719/Windows%20PowerShell%20-%20EN.zip
Administrator's Guide to PowerShell Remoting (Kostenfreies ebook)
http://PowerShell.com/cs/blogs/news/archive/2010/03/03/administrator-s-guide-to-PowerShell-remoting.aspx
Windows PowerShell Graphical Help File (Version 2.0)
http://www.microsoft.com/downloads/details.aspx?familyid=FEFB2572-559A-46FE-978D-5A00490B20FA&displaylang=en
Windows PowerShell Quick Reference
http://www.microsoft.com/downloads/details.aspx?FamilyID=df8ed469-9007-401c-85e7-46649a32d0e0&DisplayLang=en
Windows PowerShell 1.0 Documentation Pack
http://www.microsoft.com/downloads/details.aspx?FamilyID=b4720b00-9a66-430f-bd56-ec48bfca154f&DisplayLang=en
Free eBooks
http://PowerShell.org/wp/ebooks/
Bislang hatten wir Administratoren nur die Möglichkeit, diverse Tätigkeiten über selbst entwickelte VBScript-Programme (Einige dazu finden Sie auf Franks Tools) oder Kommandozeilenprogrammen (LDIFDE, CSVDE etc.) verschiedene Aktionen zu automatisieren. Das hatte die Nachteile, dass zum einen nicht alle Objekte über Skriptsprachen erreichbar waren (z.B. Mailboxrechte kann man per VBScript erst seit Exchange 2000 SP2 setzen) und zudem gerade VBScript sehr langen und teilweise auch unübersichtlichen Code produziert hat. Das lag natürlich auch an den verschiedenen Schnittstellen, die angesprochen werden mussten.
Entsprechend aufwändig und vor allem inhomogen war die Nutzung verschiedener Konfigurationen per Script. Gerade beim Anlegen von Exchange Benutzern (Siehe WSH - Benutzer mit Postfach anlegen) wird schnell deutlich, wie fehleranfällig und aufwändig das alles wird.
Mit der PowerShell wird nun alles etwas anders, da die PowerShell aus meiner Sicht die klassische "DOS-Box" als Eingabemedium für administrative Zwecke verdrängen wird. Zum Anderen mehren sich die Zeichen, dass die PowerShell als Abstraktionsebene zwischen grafischen Oberflächen und dem System werden wird. So gibt es GUIs geben, die nicht mehr direkt die KonfigurationsÄnderungen am System durchführen, sondern ihrerseits einfach nur Funktionen der PowerShell aufrufen. Microsoft und auch Dritthersteller können quasi die PowerShell als Vermittler zwischen dem Administrator und dem System verwenden. Dazu wird die PowerShell umfangreich durch eigene Funktionen und Commandlets erweiterbar sein.
Aber auch schon die eingebaute Funktionen sind für einen Administrator eine echte Hilfe, um KonfigurationsÄnderungen aber auch Auswertungen sowohl automatisiert als auch interaktiv durchzuführen. Es ein Zwischending zwischen einer Shell wie die CMD.EXE, der Unix Shell und Skriptsprachen wie Perl mit sehr mächtigen und zugleich einfachen Funktionen zur Automatisierung.
Interessant ist, dass die Shell eine Hilfe und quasi MAN-Pages anbietet, dass Funktionen mit einem Alias belegt werden können und umfangreiche Import- und Exportfunktionen (CSV, HTML, XML) bereitstehen, um Daten zu schreiben oder als Quelle für eigene Befehle zu importieren.
PowerShell und Auditing
Je mehr Anwendungen und KonfigurationsÄnderungen über die PowerShell erfolgen, desto eher kommt der Wunsch auf, diese Aktionen auch zu protokollieren. Über einen Schlüssel in der Registrierung lässt sich dies tatsächlich zumindest für die Exchange Commandlets erreichen. Der Wert kann natürlich per PowerShell selbst gesetzt werden.
set-itemproperty ` -path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellSnapIns\Microsoft.Exchange.Management.Msh.Admin ` -Name LogpipelineExecutionDetails ` -value 1
Leider weiß ich nicht, wie man dies "global" aktivieren könnte, d.h. dass PowerShell wirklich jede aufgerufene Option protokolliert. Aber schon die Protokollfunktion für Exchange ist natürlich sehr nützlich. Am besten schalten Sie diesen Eintrag ebenfalls über eine Gruppenrichtlinie für alle Systeme ein, auf denen die Exchange Management Tools installiert sind. Eine passende ADM-Vorlage finden Sie hier zum Download.
Vorlage für Gruppenrichtlinien
EnablePS1ExchangeLogging.adm
REG-Datei zum Import z.B. per StartupScript,
Softwareverteilung
enable_ps1_exchangelogging.reg
Nach der Installation finden Sie dann jede Aktion der Exchange Management Shell im "Windows PowerShell"-Eventlog.
So ist zumindest hinsichtlich Exchange eine Protokollierung möglich. Wenn Sie dann ihr System mit einen Tool zum Einsammeln von Eventlog-Meldungen kombinieren (z.B. MOM), dann haben sie schon eine recht gute Protokollierung und Dokumentation, was in ihrer Umgebung passiert. Allerdings kann eine berechtigte Person natürlich immer noch an der PowerShell vorbei Änderungen in der Konfiguration vornehmen, z. B: durch LDP, ADSIEDIT, RegEdit etc.
- Administrative Templates für Windows PowerShell
http://www.microsoft.com/downloads/details.aspx?familyid=2917A564-DBBC-4DA7-82C8-FE08B3EF4E6D&mg_id=10050&displaylang=en - PSSnapInInfo.LogPipelineExecutionDetails Property
http://msdn2.microsoft.com/en-us/library/system.management.automation.pssnapininfo.logpipelineexecutiondetails.aspx
Ein paar PowerShell Befehle
Die PowerShell steht noch am Anfang der Entwicklung aber ein paar Befehle sind schon sehr interessant und zeigen die Funktionsweise und Brauchbarkeit:
dir drivers: ls hkcu:\software\m* get-process get-progress | where {$_handles -ge 100}
Die Ausgabe kann ebenfalls umfangreich kontrolliert werden. So können die Ausgaben mit derm PIPE (|) Symbol an folgende Befehle weitergeleitet werden
- FT
FT steht für "formatted Table" und erlaubt die Ausgabe als Tabelle mit der Angabe der gewünschten Felder etc. - Group
gruppiert die Ausgabe, z.B. "| group company" gruppiert die Ergebnisse nach dem Feld "!company". Das funktioniert z.B. für Prozesse - Sort
erlaubt die Sortierung der Ausgabe nach dem Alphabet aber auch nach der Menge des Auftretens etc.
Schauen Sie einfach mal im Internet nach weiteren Beispielen der PowerShell.
Ausgabe der Methoden einer .NET-Klasse mit der Funktion "getconstructors" der PowerShell:
PS C:\> [system.net.mail.attachment].getconstructors() | foreach-object {$_.tostring()} Ausgabe: Void .ctor(System.String) Void .ctor(System.String, System.String) Void .ctor(System.String, System.Net.Mime.ContentType) Void .ctor(System.IO.Stream, System.String) Void .ctor(System.IO.Stream, System.String, System.String) Void .ctor(System.IO.Stream, System.Net.Mime.ContentType)
PS1-Dateien starten
Nun kann man mehrere PowerShell-Kommandos natürlich auch in einer PS1-Datei zusammenfassen. Das müssen nicht nur "einfache" Aufrufe sein, sondern können komplette Skripte mit Funktionen und Routinen sein. Allerdings werden Sie feststellen, dass ein "Doppelklick" auf eine PS1-Datei einfach nur Notepad startet und nicht das Skript.
Sie müssen das Skript wirklich über die PowerShell starten. Und selbst da reicht es nicht, wenn Sie einfach den Namen des Skripts auf der Kommandozeile direkt eingeben. PowerShell interpretiert dies dann einfach als String, den sie 1:1 ausgibt.
Um ein Skript im aktuellen Verzeichnis zu starten, müssen Sie ein ".\" davor schreiben. Ein Skript in einem anderen Verzeichnis startet man mit einem "&" davor
PS C:\>.\skriptimaktuellenVerzeichnis.ps1 PS C:\>& "c:\test\skriptname.ps1"
Wer mit Unix schon etwas zu tun gehabt hat, wird dies schon können.
PowerShell History und Autocomplete
Wer PowerShell-Befehle eintippt, sollte öfters mal die TAB-Taste verwenden. An vielen Stellen komplettiert PowerShell dann den Wert, den Parameter oder das Commandlet. Ist die Auswahl nicht eindeutig, dann drücken Sie einfach mehrfach TAB um durchzulaufen. Mit "UMSCHALT-TAB" geht es wieder rückwärts.
Auch gibt es eine "History", die sie einfach mit "Pfeil hoch, Pfeil runter" aufrufen können. Weniger bekannt ist hier, dass über die Variable $MaxHistoryCount sogar die Größe dieses Puffers bestimmt werden kann. Zudem können Sie auch mit einem "#" als Prefix auf die History per Autocomplete zugreifen.
- Using the Get-History Cmdlet
http://technet.microsoft.com/en-us/library/ee176849.aspx - Get-History
http://technet.microsoft.com/de-de/library/dd315385.aspx
PowerShell Performance
Oft beschweren sich Administratoren über die "langsame" Performance beim Start der PowerShell. Das liegt oft daran, dass das .NET Framework erst entsprechende Module kompilieren muss. Das kann man mit einer kurzen Zeile auch schnell vorab machen:
# 64Bit System Set-Alias ngen @( dir (join-path ${env:\windir} "Microsoft.NET\Framework64") ngen.exe -recurse | sort -descending lastwritetime)[0].fullName [appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
# 32bit Systeme Set-Alias ngen @( dir (join-path ${env:\windir} "Microsoft.NET\Framework") ngen.exe -recurse | sort -descending lastwritetime)[0].fullName [appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
Damit werden die Komponenten schon kompiliert und im Global Assembly Cache (GAC) abgelegt. Allerdings muss man das natürlich als Administrator ausführen.
E2K7 APIs
Wie ernst es Microsoft mit der PowerShell meint, zeigt die Liste der API's und deren Veränderungen mit Exchange 2007 auf http://msexchangeteam.com//archive/2005/09/15/410941.aspx
API | Wird ersetzt durch |
---|---|
ExWin32 (aka M: or IFS) |
Web Services |
Managed Agents |
|
Managed Agents |
|
PowerShell “cmdlets” |
|
PowerShell “cmdlets” |
|
Windows Workflow Foundation |
|
ASP.net |
|
MAPI |
unverändert |
Auch das Exchange Team Blog mischt kräftig mit:
- Video: Vivek Sharma and Mihai Jalobeanu on Exchange Management Shell
http://blogs.technet.com/b/exchange/archive/2006/07/20/428366.aspx - Video: Exchange Management Shell in action
http://blogs.technet.com/b/exchange/archive/2006/07/21/428388.aspx - The Admin Development Model and Send-Snippet
http://blogs.msdn.com/PowerShell/archive/2007/01/01/the-admin-development-model-and-send-snippet.aspx - Evan Dodds - TechEd 2007 PowerShell Session Video
http://blogs.technet.com/evand/archive/2007/07/26/evan-s-teched-session-video-is-posted.aspx - Exchangeteam Blog - Category Scripting
http://blogs.technet.com/b/exchange/archive/category/11149.aspx -
Exchange Server 2007 Public Folder tasks introduction (Part 1)
http://blogs.technet.com/b/exchange/archive/2006/12/03/431747.aspx -
Windows PowerShell - Einfache Befehle. Leistungsstarke Verwaltung
http://www.microsoft.com/technet/technetmag/issues/2006/12/PowerShell/default.aspx?loc=de -
E2007 PowerShell: 375 unique commands
http://www.exchangeninjas.com/pscmdlets -
Writing Exchange 2007 scripts does more than just save Nick time!
http://blogs.technet.com/b/exchange/archive/2007/02/21/435561.aspx -
Community-submitted scripts für managing Microsoft Exchange Server 2007
http://www.microsoft.com/technet/scriptcenter/csc/scripts/email/exch2007/index.mspx
PowerShell Erweiterungen
Gerade die Commandlets von PowerShell erlauben es, dass man auch als Entwickler oder Admin eigene Module entwickelt und mit einbindet. Den gleichen Weg geht ja z.B. Exchange, Lync auch. Dabei gibt es zwei Wege:
- PSSnapIn
Hierbei handelt es sich um die Erweiterung, wie Sie schon seit PowerShell1 verfügbar ist. Entsprechend kompilierte DLLs werden mit eingeladen. - Module
Seit PowerShell 2 gibt es auch Module, die etwas flexibler sind. Es müssen z.B. nicht mehr DLLs sein sondern können auch einfache PS-Dateien (Erweiterung PS1M) sein, die damit zusätzliche Funktionen anbieten können.
Wenn die Module oder Snapins auf dem lokalen Rechner installiert sind, ist Anzeige und Einbindung sehr einfach.
Befehl | Ergebnis |
---|---|
Get-PSSnapin -registered |
Liste der installierten (auch nicht geladenen) Snapins anzeigen. |
Add-PSSnapin name |
Angegebenes Snapin laden. |
Get-Command -pssnapin name |
Anzeige der Befehle, die ein Snapin Bereit stellt. |
Get-PSSnapin |
Aktuell geladene Snapins anzeigen. |
Wenn ich PowerShell-Skripte schreibe, will ich nicht immer den Administrator auffordern, die "richtige" PowerShell zu starten. Vor allem wenn Skripte sowohl Lync als auch Exchange benötigen, ist es praktischer die erforderlichen Snapins am Anfang zu laden.
# Exchange 2010 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 # Exchange 2007 Add-PSSnapin Microsoft.Exchange.Management.PowerShell.Admin # Lync Import-Module LYNC # Active Directory Import-Module ActiveDirectory # Windows Server backup Add-PSSnapin Windows.ServerBackup
Um Fehlermeldungen zu umgehen, kann man vorher prüfen, ob das Snapin schon geladen ist.
function LoadExchangeSnapin { if (! (Get-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 -ErrorAction:SilentlyContinue) ) { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 } }
Bitte laden Sie aber nur die Snapins, die installiert sind und benötigt werden.
- Corporate PowerShell Module Repository
Part 1 – Design and Infrastructure http://powertoe.wordpress.com/2010/08/10/corporate-PowerShell-module-repository-part-1-design-and-infrastructure/
Part 2 – Developer Guide http://powertoe.wordpress.com/2010/08/12/corporate-PowerShell-module-repository-part-2-developer-guide/ - Extending PowerShell: Modules and Snapins
http://www.windowsitpro.com/blogs/PowerShellwithaPurpose/tabid/2248/entryid/13017/Default.aspx
Und es gibt noch Platz für PowerShell Erweiterungen.
- PowerShell Community Extensions
http://www.codeplex.com/PowerShellCX - IT-Visions.de PowerShell Commandlet Extension Library
http://hs.it-visions.de/scripting/PowerShell/PowerShellCommandletExtensions.aspx
Commandlets für Adtive Directory und Hardware - Free PowerShell Commands für Active Directory
http://www.quest.com/activeroles_server/arms.aspx
z.B. SET-GADUser, GET-GADUser, NAW-GADUser und andere Commandlets - NetCMDLets ($)
http://www.nsoftware.com/PowerShell/ - PowerShell Gadgets
http://www.powergadgets.com/ - LDAP-Erweiterungen für die PowerShell Codebeispiel für PowerShell
Language (PSL)
http://www.it-visions.de/lserver/CodeSampleDetails.aspx?c=4482 - BSonPosh - The “Power” of SHELL : Citrix Functions Updated!
http://bsonposh.com/archives/239
PowerShell für Citrixfunktionen, z.B.: Publish-CitrixApplication, unPublish-CitrixServer, Remove-CitrixApplication, Get-CitrixApp, Get-CitrixAppUsers, Get-CitrixAppServers, Find-CitrixUser
PowerShell remote verwenden
Sowohl Exchange als auch Lync nutzen alternative Wege, remote zu verwalten. Beide addieren ein virtuelles Verzeichnis im IIS, gegen welche sich eine PowerShell verbinden kann.
PowerShell Skripte erstellen
Natürlich ist die PowerShell nicht nur eine Konsole zur Eingabe von "One-Liners", also Befehlen, die in eine Zeile passen. Die PowerShell kann komplette Skripte und Programme ausführen. Allerdings ist es sehr nervig, diese Skripte mit Notepad zu erstellen. Da lobe ich mir EntwicklungsUmgebungen, die ein Debugging erlauben und bei der Eingabe schon die möglichen Optionen vorschlagen. für die PowerShell gibt es gleich mehrere kostenfreie und kommerzielle Optionen:
- PowerGUI
http://www.powergui.org/
www.quest.com/PowerShell/powergui.aspx - PowerShell Plus
http://www.PowerShell.com
http://www.idera.com/products/PowerShell/ - PowerShell IDE (veraltet)
http://www.PowerShell.com/
PowerShell "planen"
PowerShell-Skripte können wie jedes andere Programm und Skript natürlich auch einfach über den Taskplaner regelmäßig ausgeführt werden. Sie starten einfach die "PowerShell.exe" und übergeben das gewünschte Kommando. Ein direkter Aufruf von PS1-Dateien würde sonst nur den Notepad oder einen anderen Default-Editor öffnen.
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -command "get-process"
Der String hinter "Command" ist einfach PowerShell, d.h. das kann ein einzelnes Commandlet oder eine Serie von Befehlen (durch ";" getrennt) sein.Wer dann natürlich noch Exchange-Befehle absetzen will, muss dafür sorgen, dass die Exchange LaufzeitUmgebung mit geladen wird.
C:\Windows\System32\WindowsPowerShell\v1.0\PowerShell.exe -command ". 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'; Connect-ExchangeServer -auto; get-mailboxdatabase"
- PowerShell und Taskplaner
- PSRemote
- WinRM
- Creating Scheduled Tasks für Exchange 2010 PowerShell Scripts
http://www.mikepfeiffer.net/2010/02/creating-scheduled-tasks-for-exchange-2010-PowerShell-scripts/
PowerShell "beschleunigen mit NGEN
Viele Administratoren beschweren sich, dass die PowerShell sehr lange zum Start braucht. Das wird um so länger, wenn weitere AddIns (wie z.B. Exchange) geladen werden müssen. Das Problem dabei ist, dass .NET-typisch noch nicht genutzte Module erst "kompiliert" werden müssen. Aus dem gleichen Grund braucht das Exchange Setup und Rollup Fixes lange, da auch hier nur vorkompilierte Assemblies installiert werden die beim Start oder durch NGEN während der Installation erst für das Zielsystem kompiliert werden.
Das kann man aber beschleunigen. Jeff Snovers hat auf seinem Blog die Hinweise und ein passendes PowerShell-Skript veröffentlicht.
- Speeding up PowerShell Startup
http://blogs.msdn.com/PowerShell/archive/2008/07/11/speeding-up-PowerShell-startup.aspx
http://blogs.msdn.com/PowerShell/archive/2008/09/02/speeding-up-PowerShell-startup-updating-update-gac-ps1.aspx - Update-Gac.ps1
http://blogs.msdn.com/PowerShell/archive/2007/11/08/update-gac-ps1.aspx
Set-Alias ngen @( dir (join-path ${env:\windir} "Microsoft.NET\Framework") ngen.exe -recurse | sort -descending lastwritetime )[0].fullName [appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
Auf Windows 64bit Systemen müssen Sie das Skript etwas anpassen:
Set-Alias ngen @( dir (join-path ${env:\windir} "Microsoft.NET\Framework64") ngen.exe -recurse | sort -descending lastwritetime )[0].fullName [appdomain]::currentdomain.getassemblies() | %{ngen $_.location}
PowerShell und mobile Geräte
Gleich vorneweg: Es gibt keine PowerShell für Windows Mobile oder sonst ein mobiles Gerät. Aber das heißt ja nicht, dass man nicht doch von einem Smartphone auf einem Server einen "PowerShell-befehl" ausführen kann. Schon Exchange 2010 erlaubt per OWA diverse Dinge wie Messagetracking oder Pflege von Gruppenmitgliedschaften. Andere haben auch schon Ideen veröffentlicht:
- PowerShell per SSH ausführen
http://www.PowerShellinside.com/PowerShell/ssh/ - Execute PowerShell Scripts from Your Smartphone
http://dmitrysotnikov.wordpress.com/2008/05/08/execute-PowerShell-scripts-from-your-smartphone/
Eine Mail wird von Outlook extrahiert, von PowerShell gestartet und als Antwort wieder zurück gesendet. - PowerGUI Pro MobileShell
http://www.youtube.com/watch?v=_6QOR5nlhmk&feature=PlayList&p=807CCBBC67873456&index=18
Natürlich könnte man auch eine kleine APP schreiben, die per HTTPs einen Webservice anspricht, der dann gewünschten Aktionen ausführt.
Weitere Microsoft Links
- Mit Windows 2008 R2 und Windows 7 wurde PowerShell 2
released. Pakete für ältere Betriebssysteme sollen nachkommen.
http://blogs.msdn.com/PowerShell/archive/2009/07/23/windows-PowerShell-2-0-rtm.aspx
http://blogs.msdn.com/PowerShell/pages/download-windows-PowerShell.aspx
https://connect.microsoft.com/windowsmanagement/Downloads - Windows PowerShell Scriptomatic
http://www.microsoft.com/downloads/details.aspx?FamilyID=D87DAF50-E487-4B0B-995C-F36A2855016E&displaylang=en - VBScript zu PowerShell Seite
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/default.mspx - E2K7: Managementshell
- PowerShell Toolbox
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/toolbox.mspx - Windows PowerShell
Dokumentation
http://www.Microsoft.com/downloads/details.aspx?FamilyId=B4720B00-9A66-430F-BD56-EC48BFCA154F&displaylang=en - WebCasts
http://www.microsoft.com/technet/scriptcenter/webcasts/ps.mspx - Introduction in Exchange 2007 Management Shell
http://www.microsoft.com/downloads/details.aspx?FamilyID=1dc0f61b-d30f-44a2-882e-12ddd4ee09d2&DisplayLang=en - Exchange Management Shell Quick Reference
http://www.microsoft.com/downloads/details.aspx?familyid=01A441B9-4099-4C0F-B8E0-0831D4A2CA86&mg_id=10048&displaylang=en - Kleine deutschsprachige Einführung
http://www.microsoft.com/technet/technetmag/issues/2006/12/HeyScriptingGuy/default.aspx?loc=de/ - PowerShell Blog
http://blogs.msdn.com/PowerShell/ - Dude, Where's My Manual?
http://blogs.msdn.com/PowerShell/archive/2008/07/18/dude-where-s-my-manual.aspx - Scripting with Windows PowerShell
http://www.Microsoft.com/technet/scriptcenter/hubs/msh.mspx - PowerShell auf der Windows System Server Website
http://www.Microsoft.com/windowsserver2003/technologies/management/PowerShell/default.mspx - What Can I Do With Windows PowerShell?http://www.Microsoft.com/technet/scriptcenter/topics/msh/cmdlets/index.mspx
-
IT's Showtime: Monad: Microsoft's Next Generation Command Shell
http://www.Microsoft.com/emea/itsshowtime/sessionh.aspx?videoid=277 -
Automation And Reporting With The Exchange Management Shell
mms://wm.microsoft.com/ms/exchange/2007/Automation_And_Reporting_With_The_Exchange_Management_Shell_300k.wmv -
WebCasts
http://www.microsoft.com/technet/scriptcenter/webcasts/ps.mspx - PowerShell Team Blog
http://blogs.msdn.com/PowerShell/
http://blogs.msdn.com/monad/
PowerShell spielt "Jingle Bells"
http://blogs.msdn.com/PowerShell/archive/2006/12/21/jingle.aspx - Using Exchange Management Shell Commands With Managed Code
http://msdn.microsoft.com/en-us/library/bb332449(EXCHG.80).aspx - Windows PowerShell Week Question and Answer Log
http://www.microsoft.com/technet/scriptcenter/webcasts/psweek/day3qanda.mspx - Exchange PowerShell PM Blog
http://www.viveksharma.com/techlog/ - Announcing the Exchange 2007 PowerShell Scriptacular demo pack! http://www.viveksharma.com/TECHLOG/archive/2006/12/21/announcing-the-exchange-2007-PowerShell-scriptacular-demo-pack.aspx
- Active Directory Administrative Center für Windows Server 2008 R2
implemented using ADPowerShell!
http://blogs.msdn.com/adPowerShell/archive/2009/03/27/active-directory-administrative-center-for-windows-server-2008-r2-implemented-using-adPowerShell.aspx - Active Directory Administrative Center: Getting Started
http://technet.microsoft.com/en-us/library/dd560651.aspx - Windows PowerShell (1,6 MB)
http://www.microsoft.com/windowsserver2003/technologies/management/PowerShell/download.mspx - PowerShell Homepage
http://www.microsoft.com/windowsserver2003/technologies/management/PowerShell/default.mspx - Exchange Management Shell
http://www.microsoft.com/technet/prodtechnol/exchange/e2k7help/c05a8c55-fbb3-4eb6-ad02-ea5430f03132.mspx - Kleine deutschsprachige Einführung
http://www.microsoft.com/technet/technetmag/issues/2006/12/HeyScriptingGuy/default.aspx?loc=de/ - Windows PowerShell 1.0 Installation Package für Windows Vista (KB928439)
http://www.microsoft.com/downloads/details.aspx?familyid=C6EF4735-C7DE-46A2-997A-EA58FDFCBA63&displaylang=en
Anleitungen und Kurse
-
Mastering PowerShell in your Lunch Break
Day 1: Getting Organized
http://PowerShelllive.com/blogs/lunch/archive/2007/03/26/day-1-getting-organized.aspx
Day 2: Writing Scripts and Translating VBScript
http://PowerShelllive.com/blogs/lunch/archive/2007/03/28/day-2-writing-scripts-and-translating-vbscript.aspx
Day 3: Discovering objects (COM, WMI & ADSI)
http://PowerShelllive.com/blogs/lunch/archive/2007/03/29/day-3-objects-wmi-and-adsi.aspx
Day 4: Ins and Outs of the Windows Registry
http://PowerShelllive.com/blogs/lunch/archive/2007/03/31/day-5-ins-and-outs-of-the-windows-registry.aspx
Day 5: using WMI
http://PowerShelllive.com/blogs/lunch/archive/2007/04/02/day-5-using-wmi.aspx
Day 6: ADSI Connecting to Domains/Computers and Binding to Objects
http://PowerShelllive.com/blogs/lunch/archive/2007/04/04/day-6-adsi-connecting-to-domains-computers-and-binding-to-objects.aspx
Day 7: Manage Users
http://PowerShelllive.com/blogs/lunch/archive/2007/04/05/day-7-manage-Users.aspx - PowerShell Scripting Alles Wissenswerte rund um Microsofts
PowerShell für Administratoren
http://www.searchnetworking.de/PowerShell/
Teil 1: universalwerkzeug für Administratoren
Teil 2: Die PowerShell-Language
Teil 3: Cmdlets und Pipeline-Processer – Die Herzstücke der PowerShell
Teil 4: PowerShell-Scriptdateien und Profile
Teil 5: Systemverwaltung mit PowerShell
Teil 6: .NET-Klassen mit der PowerShell verwenden
Teil 7: Windows Management Instrumentation (WMI) im Einsatz
Teil 8: Verwendung des Component Object Models (COM)
Teil 9: Zugriff auf das Active Directory über ADSI
Teil 10: XML-Bearbeitung mit der PowerShell
Teil 11: Exchange Server 2007 - Verwaltung mit der PowerShell
Teil 12: Microsofts PowerShell mit Produkten von Drittanbietern - PowerShell and ADSI
http://blogs.msdn.com/b/arulk/archive/2006/07/25/678137.aspx -
PowerShell Challenge (Phyton Challenge)
http://thePowerShellguy.com/blogs/posh/archive/tags/PoSH+Challenge/default.aspx -
Holger
Schwichtenberg (MVP Scripting)
http://www.it-visions.de/scripting/PowerShell -
PowerShell für RunAways
http://www.administrator.de/PowerShell_for_Runaways_-_Part_I.html
und Folgeteile -
Powerscripting:
Blog http://powerscripting.wordpress.com
Podcast http://feeds.feedburner.com/powerscripting -
PowerShell & PowerGUI
http://www.youtube.com/User/questsoftware#grid/User/807CCBBC67873456
Weitere Links
-
PowerShell und Visual Studio
Templates für eigene PowerShell Snapins in Visual Studio installieren - Wikipedia PowerShell
http://de.wikipedia.org/wiki/Windows_PowerShell
Mit einer Tabelle der verschiedenen Produkte mit Commandlets - CommunitySite mit Forum und Tutorials etc.
http://www.PowerShell-ag.de - Adam Barr's Blog
http://www.proudlyserving.com/ - Lee Holmes Blog
http://www.leeholmes.com/blog/ - Blog eines C-Developers, der wenige als Admin und Skriptschreiber
sondern mehr die API Seite beleuchtet
http://www.nivot.org/ - Reskit.net
http://www.reskit.net/monad/ - PowerShellScripts
http://e12.editme.com/PSSCategories -
Vortrag
'SEC307 Windows Scripting in the Secure Way'
http://www.it-visions.de/produkte/vortragsdetails.aspx?id=4542
PowerShell: Die Befehle heißen Commandlets
http://www.it-visions.de/lserver/artikeldetails.aspx?b=2447
Erklärung des Begriffs: Windows PowerShell (WPS) Was ist Windows PowerShell (WPS)?
http://www.it-visions.de/glossar/details.aspx?Begriff=Windows+PowerShell&ID=4154 -
Umfangreiche Tutorials
http://www.PowerShellpro.com/ -
VBScript zu PowerShell umsteigerhilfen
http://www.microsoft.com/technet/scriptcenter/topics/winpsh/convert/default.mspx - Channel 9 Wiki
http://channel9.msdn.com/wiki/default.aspx/Channel9.MSHWiki - PowerShell Einführungsvideo
http://channel9.msdn.com/ShowPost.aspx?PostID=26795#26795. - Auch in der .NET Show ist ein Abschnitt über die PowerShell
http://www.msdn.Microsoft.com/theshow/Episode043/default.asp - Technet Magazin Juni 2007 - Arbeiten mit Active Directory
http://www.microsoft.com/technet/technetmag/issues/2007/06/PowerShell/default.aspx?loc=de - TechNet Magazin: Remote PowerShell
http://technet.microsoft.com/de-de/magazine/2009.08.windowsPowerShell.aspx - Beispielskripte
http://channel9.msdn.com/wiki/default.aspx/Channel9.MSHSampleScript
http://www.reskit.net/monad/samplescripts.htm - Newsgroup
nntp://Microsoft.public.windows.server.scripting - MSDN
http://winfx.msdn.Microsoft.com/library/default.asp?URL=/library/en-us/monad_gettingstarted/html/e72d9b1b-c1c0-41f0-83e7-d230ff3f9144.asp - Eine Beispiele für PowerShell und Exchange 2007
http://msexchangeteam.com//archive/2005/08/16/409299.aspx - Das erste Spiel für die PowerShell ?
http://www.proudlyserving.com/aliens.html - Using Monad and WMI with Exchange 2003
http://gsexdev.blogspot.com/2005/11/using-monad-and-wmi-with-exchange-2003.html - MSH directory watcher with popup-balloon
http://mow001.blogspot.com/2005/10/msh-directory-watcher-with-popup.html - Power-Shelling the Message Trackinglogs on Exchange 2000/2003
http://gsexdev.blogspot.com/2006/05/power-shelling-message-tracking-logs.html - Sending a SysLog Message using Monad
http://gsexdev.blogspot.com/2005/11/sending-syslog-message-using-monad.html - Blog zu PowerShell
http://PowerShell-basics.com/ - PowerShell Cookbook
Basics http://www.johndcook.com/PowerShellCookbook.html'
RegEx http://www.johndcook.com/regex.html - Weitere Communitysites
http://thePowerShellguy.com
http://poshoholic.com/
http://www.reskit.net/monad/
http://www.reskit.net/monad/samplescripts.htm - http://www.msexchange.org/tutorials/Exchange-12-Monad-based-Exchange-Management-Shell.html
- http://www.msexchange.org/articles_tutorials/exchange-server-2007/management-administration/managing-exchange-2007-using-powergui-part1.html
- PowerShell remote per SSH und Cygwin nutzen
http://hivearchive.com/2006/07/03/using-PowerShell-through-ssh/ - PowerShell mit Gruppenrichtlinien
http://www.specopssoft.com/PowerShell/
http://www.specopssoft.com/wiki/index.php/SpecopsCommand/Licensing Vergleich Free und Kommerziell
http://www.winworkers.com/Produkte/SpecOps/SpecOpsCommand/tabid/144/Default.aspx - http://www.microsoft.com/technet/scriptcenter/topics/winpsh/tools/specops.mspx
-
PowerShell on Server Core (inofficial/not supportet)
http://dmitrysotnikov.wordpress.com/2008/05/15/PowerShell-on-server-core/
4 Schritte: C++ redistributable, NET2.0 (mit Orca im MSI die Version gepatched), PowerShell -
Dealing with ADSLarge Integer in PowerShell
http://bsonposh.com/archives/226 -
PowerShell ASPX - dynamische Webseiten per PowerShell erstellen (ps1x)
http://www.PowerShelltoys.com/default.aspx
http://blogs.msdn.com/PowerShell/archive/2008/07/18/PowerShell-asp-too-cool.aspx -
NetCmdlets V2.0
http://www.nsoftware.com/PowerShell/
SNMP, LDAP, DNS, Syslog, HTTP, WebDav, FTP, SMTP, POP, IMAP, Rexec/RShell, Telnet, and more. -
Packet Sniffer für PowerShell
http://blog.robbiefoust.com/?p=68 -
Windows PowerShell Week Script Samples
http://www.microsoft.com/downloads/details.aspx?FamilyID=264CE487-1D36-4466-BD8B-23A7F1FA967E&displayLang=en -
Weiteren kann in der PowerShell auch ein ...
http://digilib.happy-security.de/files/PowerShell-Tutorial.pdf - http://www.PowerShellpraxis.de
- http://www.admin-source.de/BlogDeu/
-
A Quick Guideline für Microsoft Windows PowerShell:
Part1: Basics http://www.codeproject.com/Articles/100999/A-Quick-guideline-for-Microsoft-Windows-PowerShell
Part2: VBscript to PowerShell http://www.codeproject.com/Articles/102207/A-Quick-Guideline-for-Microsoft-Windows-PowerShell
Part 3 Office http://www.codeproject.com/Articles/102856/A-Quick-Guideline-for-Microsoft-Windows-PowerShell