„PowerShell“ – Versionsunterschied
[gesichtete Version] | [gesichtete Version] |
MovGP0 (Diskussion | Beiträge) K →Module |
MovGP0 (Diskussion | Beiträge) →Weblinks: +BDD/UT |
||
Zeile 781: | Zeile 781: | ||
;Portierungen |
;Portierungen |
||
* {{Internetquelle|zugriff=2013-08-06|sprache=en|werk=Github|url=http://pash-project.github.io/|titel=Pash|kommentar=[[Mono-Projekt|Mono]]-Portierung von PowerShell}} |
* {{Internetquelle|zugriff=2013-08-06|sprache=en|werk=Github|url=http://pash-project.github.io/|titel=Pash|kommentar=[[Mono-Projekt|Mono]]-Portierung von PowerShell}} |
||
;[[Behavior Driven Development|BDD]] und [[Modultest|Unit Testing]] Frameworks |
|||
* {{Internetquelle|url=https://github.com/pester/Pester|titel=Pester|werk=Github|Sprache=en|zugriff=2014-04-16}} |
|||
* {{Internetquelle|url=http://psunit.codeplex.com/|titel=PS Unit|werk=CodePlex|Sprache=en|zugriff=2014-04-16}} |
|||
* {{Internetquelle|url=http://www.nuget.org/packages/PsTest/|titel=PsText|Sprache=en|zugriff=2014-04-16}} |
|||
;Sonstiges |
;Sonstiges |
Version vom 16. April 2014, 09:01 Uhr
PowerShell
| |
---|---|
![]() | |
![]() Screenshot von PowerShell 5.0 unter Windows 8.1 | |
Basisdaten
| |
Entwickler | Microsoft |
Erscheinungsjahr | 14. November 2006 |
Aktuelle Version | 4.0 (17. August 2013) |
Aktuelle Vorabversion | 5.0 (3. April 2014) |
Betriebssystem | Windows XP (1.0 und 2.0) Windows Server 2003 (1.0 und 2.0) Windows Vista (1.0 und 2.0) Windows Server 2008 (1.0 und 2.0) Windows Server 2008 R2 (2.0, 3.0 und 4.0) Windows 7 (2.0, 3.0 und 4.0) Windows 8 (3.0) Windows 8.1 (4.0) |
Programmiersprache | C#[1] |
Kategorie | Betriebssystem-Shell |
Lizenz | MS-EULA |
deutschsprachig | ja |
Windows PowerShell |
Die Windows PowerShell (powershell.exe), zeitweise auch bekannt unter den Codenamen Monad und Microsoft Command Shell (MSH), ist eine von Microsoft entwickelte Alternative zum Windows-Kommandozeilenprogramm cmd.exe und zum Windows Script Host.
Zweck und Eigenschaften
Die auf dem .NET-Framework in der Version 2.0 basierende Windows PowerShell verbindet die aus Unix-Shells bekannte Philosophie von Pipes und Filtern mit dem Paradigma der objektorientierten Programmierung. Der Benutzer kann wie bisher einfache Befehle an einer Kommandozeile ausführen und miteinander verknüpfen oder aber auch komplexe Skript-Programme mit der eigens dafür entwickelten PowerShell Scripting Language schreiben.
Ursprünglich war die erste Veröffentlichung der PowerShell als Bestandteil von Windows Vista am 30. November 2006 geplant. Sie wurde aber nur mit dem gleichzeitig veröffentlichten Microsoft Exchange Server 2007 ausgeliefert. Auf allen nachfolgenden PC-Betriebssystemen von Microsoft ist die PowerShell bereits vorinstalliert.
Versionen 1.0 und 2.0[2] werden auch für die Betriebssysteme Windows XP, Windows Server 2003 und Windows Vista zum kostenlosen Herunterladen angeboten.
Ab Windows 7 wird die PowerShell in der Version 2.0 vorinstalliert. Sie enthält unter anderem die grafische Entwicklungsumgebung PowerShell ISE (Integrated Scripting Environment). Sie unterstützt das Autovervollständigen von Befehlen, farbliche Syntaxkennzeichnungen und enthält einen Script-Debugger.
Windows 8 wird mit der Version 3.0 der PowerShell geliefert. Als wesentliche Neuerungen bringt sie die Unterstützung für Workflows auf Basis der Windows Workflow Foundation, Remote-Sessions, die unterbrochen und später auch von einem anderen PC aus wiederaufgenommen werden können, sowie die Möglichkeit, Scripts zeitgesteuert oder abhängig von Ereignissen auszuführen. PowerShell 3.0 ist als Teil des Windows Management Framework 3.0 auch für Windows 7 SP1 und Windows Server 2008 R2 SP1 verfügbar; für XP und Vista jedoch nicht.
Das Management Framework 4.0 für Windows 7 SP1 und Windows Server 2008 R2 SP1 wurde am 24. Oktober 2013 als finale Version veröffentlicht. Es wird mit Windows Server 2012 R2, sowie Windows 8.1 standardmäßig ausgeliefert.[3]
Anfang April 2014 wurde eine Vorabversion des Management Framework 5.0 bereitgestellt.[4] Die wichtigsten Neuerungen ist die Möglichkeit Softwarepakete über NuGet-Repositories wie etwa Chocolatey zu installieren, sowie die Möglichkeit Switches zu verwalten, welche den CIM-Standard unterstützen.
Details
Den Kern der PowerShell bilden kleine Funktionseinheiten, genannt Cmdlets (gesprochen command-lets), die dem Benennungsschema Verb-Substantiv folgen, also beispielsweise Get-Help
oder Set-Location
, wobei die Groß-/Kleinschreibung keine Rolle spielt. Da die Bezeichnungen einiger Cmdlets relativ lang sind, können kürzere Alias-Namen vergeben werden, von denen bereits einige standardmäßig vordefiniert sind, unter anderem als Hilfe für Umsteiger von Unix-Shells oder der DOS/NT-Kommandozeile (beispielsweise ls
, dir
, cp
, …).
Powershell 2.0 enthält 236 Cmdlets sowie 137 Aliase.
Die Cmdlets sind als spezielle .NET-Klassen implementiert, welche als Eingabe bestimmte Parameter (gekennzeichnet durch ein vorangestelltes „-
“) und Objekte annehmen und als Ausgabe wiederum Objekte zurückliefern, die dann beispielsweise als Tabelle formatiert ausgegeben oder zur weiteren Verarbeitung an andere Cmdlets weitergeleitet werden können. Da die Ausgabe nicht als Textstrom erfolgt, sondern als strukturiertes Objekt, lassen sich bestimmte Eigenschaften leicht ohne aufwändige Textanalyse selektieren und manipulieren. Analysen über Reguläre Ausdrücke sind jedoch ebenfalls möglich. Zurückgelieferte Objekte können auch in Variablen gespeichert und an anderer Stelle wiederverwendet werden.
Die Funktionalität der PowerShell lässt sich durch sogenannte Snap-Ins erweitern, welche auf einen Schlag ganze Sätze von Cmdlets importieren und dem Benutzer zur Verfügung stellen. Mittels Get-Help
werden Hilfeseiten zu Cmdlets angezeigt, die dem Format von Unix-Manpages ähnlich sind. Falls Cmdlets mit dem speziellen Parameter „-whatif
“ aufgerufen werden, wird der Benutzer darüber informiert, was passiert wäre, eine Aktion findet jedoch nicht statt.
Neben den Cmdlets lassen sich direkt von der Kommandozeile auch herkömmliche Programme, selbstdefinierte Funktionen, Skripte und Batch-Dateien starten, ebenso Dokumente, die beim Aufrufen mit dem dazugehörigen Anwendungsprogramm geöffnet werden.
Die PowerShell erlaubt Zugriff auf WMI-Klassen, COM-Objekte sowie auf das gesamte .NET-Framework.
Über sogenannte Provider können hierarchische Strukturen wie die Windows-Registrierungsdatenbank, der Variablen-Namensraum und andere als virtuelle Laufwerke eingebunden und wie ein Dateisystem navigiert, referenziert und bearbeitet werden, zum Beispiel „Env:
“, „HKLM:
“, „Variable:
“ oder „Function:
“. Diese werden jedoch nicht im Windows-Explorer angezeigt.
Für den interaktiven Betrieb bietet die PowerShell eine automatische Befehlszeilenergänzung per Tabulatortaste für Cmdlets, Parameter, Eigenschaften sowie Datei- und Verzeichnisnamen, die bei Bedarf vom Benutzer an seine eigenen Bedürfnisse angepasst werden kann.
Anders als bei bisher existierenden objektorientierten Skript-Interpretern (BeanShell, Smalltalk, Python Shell) ist die Syntax der PowerShell-Skriptsprache, welche sich unter anderem Anleihen bei Perl, Unix-Shells, SQL und C# nimmt, darauf ausgelegt, auch für den täglichen interaktiven Gebrauch als Shell für administrative Aufgaben wie etwa Dateiverwaltung geeignet zu sein.
Cmdlets
Cmdlets sind in einer .NET Sprache verfasste Erweiterungen für die Powershell. Zusätzlich ist es möglich, Skripte in der Powershell-Skriptsprache zu verfassen, die sich wie Cmdlets verhalten. Die folgende Tabelle stellt eine Auswahl der mitgelieferten Cmdlets den vergleichbaren Befehlen anderer Kommandozeileninterpreter gegenüber.
Windows PowerShell (Cmdlet) |
Windows PowerShell (Alias) |
cmd.exe bzw. COMMAND.COM (MS-DOS, Windows, OS/2, etc.) |
Unix-Shell (Unix, BSD, Linux, etc.) |
Beschreibung |
---|---|---|---|---|
Get-Help | help | man | Hilfe zu Befehlen | |
Get-Command | gcm | Listet alle im derzeitigen Kontext verfügbaren Befehle und Aliase auf. | ||
Get-Alias | gal | alias | Listet Aliase für Befehle auf. | |
Get-Location | gl, pwd | cd | pwd | Ausgabe des aktuellen Verzeichnisses |
Set-Location | sl, cd, chdir | cd, chdir | cd | Wechseln des aktuellen Verzeichnisses |
Clear-Host | cls, clear | cls | clear | Löschen der Ausgabe |
Copy-Item | cpi, copy, cp | copy | cp | Kopieren einer oder mehrerer Dateien / eines ganzen Verzeichnisbaums |
Remove-Item | ri, del, erase, rmdir, rd, rm | del, rmdir, rd | rm, rmdir | Löschen einer Datei / eines Verzeichnisses |
Rename-Item | rni, ren | ren | mv | Umbenennen einer Datei / eines Verzeichnisses |
Move-Item | mi, move, mv | move | mv | Verschieben einer Datei / eines Verzeichnisses |
Get-ChildItem | gci, dir, ls | dir | ls | Liste aller Dateien / Verzeichnisse im (aktuellen) Verzeichnis |
Write-Host | echo, write | echo | echo | Ausgabe von Zeichenketten, Variablen etc. in der Konsole |
Pop-Location | popd | popd | popd | In Verzeichnis wechseln, welches zuletzt auf dem Stack abgelegt wurde |
Push-Location | pushd | pushd | pushd | Verzeichnis auf dem Stack ablegen |
Set-Variable | sv, set | set | set | Wert einer Variable setzen / Variable anlegen |
Start-Process | saps | start | Startet ein Programm im eigenen Fenster | |
Get-Content | gc, type, cat | type | cat | Ausgabe einer Datei |
Select-String | sls | find, findstr | grep | Suche und Filterung definierter Zeichenketten |
Get-Process | gps, ps | tasklist | ps | Liste aller momentan laufenden Prozesse |
Stop-Process | spps, kill | taskkill[5] | kill | Beenden eines laufenden Prozesses |
Stop-Computer | shutdown | shutdown, poweroff | Herunterfahren des Rechners | |
Restart-Computer | shutdown -r | reboot, shutdown -r | Neustart des Rechners | |
Tee-Object | tee | tee | Standardeingabe in eine Datei oder Variable umleiten und entlang der Pipeline weiterreichen (Standardausgabe) | |
Get-NetIPAddress Get-NetIPConfiguration |
gip | ipconfig | ifconfig | Listet die Netzwerkschnittstellen mit Konfigurationsinformationen auf |
Get-Acl | acl | Listet die Zugriffsberechtigungen eines Ordners oder Dokuments auf. | ||
Get-Member | gm | Listet die Mitglieder (Member-Variablen) eines Objektes auf. | ||
Get-PSSnapin | gsnp | Listet die aktiven PowerShell-Erweiterungen auf. | ||
Export-Console | export | Exportiert die aktive Konfiguration der Konsole in eine Datei. Eine neue PowerShell-Instanz kann diese Konfiguration über den Parameter -psconsolefile <String> beim Start laden.
|
Verben
Die Verben, mit denen Cmdlets beginnen können, lassen sich in Gruppen klassifizieren:[6] Die Liste der möglichen Verben ist abhängig von der verwendeten PowerShell-Version und kann mit Get-Verb
abgerufen werden.
- Allgemein
Add
,Clear
,Close
,Copy
,Enter
,Exit
,Find
,Format
,Get
,Hide
,Join
,Lock
,Move
,New
,Open
,Optimize
,Pop
,Push
,Redo
,Remove
,Rename
,Reset
,Resize
,Search
,Select
,Set
,Show
,Skip
,Split
,Step
,Switch
,Undo
,Unlock
,Watch
- Kommunikation
Connect
,Disconnect
,Read
,Receive
,Send
,Write
- Daten
Backup
,Checkpoint
,Compare
,Compress
,Convert
,ConvertFrom
,ConvertTo
,Dismount
,Edit
,Expand
,Export
,Group
,Import
,Initialize
,Limit
,Merge
,Mount
,Out
,Publish
,Restore
,Save
,Sync
,Unpublish
,Update
- Diagnose
Debug
,Measure
,Ping
,Repair
,Resolve
,Test
,Trace
- Lebenszyklus
Approve
,Assert
,Complete
,Confirm
,Deny
,Disable
,Enable
,Install
,Invoke
,Register
,Request
,Restart
,Resume
,Start
,Stop
,Submit
,Suspend
,Uninstall
,Unregister
,Wait
- Andere
Use
- Sicherheit
Block
,Grant
,Protect
,Revoke
,Unblock
,Unprotect
Andere Verben wie etwa checkout
und commit
sind zwar möglich, aber nicht zulässig. Stattdessen sind die Standardverben wie Request
und Submit
zu verwenden. Weitere Verben können jedoch in Form eines Alias definiert sein. Um cmdlets mit bestimmten Verben aufzulisten kann der Befehl Get-Command -Verb <string[]>
verwendet werden.
Snap-Ins
Cmdlets werden in einem Snap-In zusammengefasst. Snap-Ins werden mit InstallUtil.exe AssemblyName.dll
installiert, welches ein Bestandteil des .NET Frameworks ist. Installierte Snap-Ins können anschließend mit Add-PSSnapin
aktiviert werden. Aktive Snap-Ins können mit Get-PSSnapin
bzw. Get-PSSnapin -Registered
aufgelistet und mit Remove-PSSnapin
entfernt werden.
Ein Snap-In sieht in C# wie folgt aus:
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
namespace Wikimedia
{
// Snap-In
[RunInstaller(true)]
public class WikipediaSnapIn : CustomPSSnapIn
{
public override string Name
{
get { return "Wikipedia.Cmdlet"; }
}
public override string Vendor
{
get { return "Wikimedia"; }
}
public override string Description
{
get { return "Cmdlets for Wikipedia."; }
}
public override Collection<CmdletConfigurationEntry> Cmdlets
{
get
{
return new Collection<CmdletConfigurationEntry>
{
new CmdletConfigurationEntry("Get-WikipediaArticle", typeof (GetArticle), null),
/* registering other cmdlets */
};
}
}
}
// Cmdlet
[Cmdlet(VerbsCommon.Get, "WikipediaArticle")]
public class GetArticle : Cmdlet
{
[Parameter(Mandatory=true)]
public string ArticleName { get; set; }
[Parameter(Mandatory=true)]
public string Language { get; set; }
protected override void ProcessRecord()
{
// Implementation comes here...
WriteObject(result);
}
}
}
Erweitertes Typsystem
PowerShell-Skripte sind dynamisch typisiert. Dabei kommt ein erweitertes Typsystem (englisch: extended type system, ETS) zum Einsatz, bei dem .NET-Objekte in der Klasse PSObject
gekapselt werden. PSObject
stellt hierbei die Basisklasse für PowerShell-Objekte dar. PSObject
entspricht damit einer Monade.
In C#:
using System;
using System.Management.Automation;
namespace PowerShell
{
public class PSObjectExample
{
public void Main()
{
var time = DateTime.UtcNow;
var powerTime = new PSObject(time);
}
}
}
|
In PowerShell:
# Aufruf einer statischen Methode mit [ClassName]::Method
# Variable $time ist explizit typisiert
[System.DateTime]$time = [System.DateTime]::UtcNow
# explizites Typecasting nach PSObject
# Variable $powerTime ist implizit typisiert
$powerTime = [System.Management.Automation.PSObject] $time
# Aufruf eines Konstruktors
$powerTime = New-Object System.Management.Automation.PSObject($time)
|
PowerShell bietet implizite Typkonvertierung. Dabei kommen Typkonverter zum Einsatz, von denen einige vorgegeben sind:
Typ | Konvertiert nach | Methode |
---|---|---|
null | String | gibt String.Empty zurück
|
null | Char | gibt '\0' zurück
|
null | Numeric | gibt 0 zurück
|
null | Boolean | gibt false zurück
|
null | Nullable<T> | gibt null zurück
|
null | Objektreferenz | gibt null zurück
|
Klasse | Basisklasse | Boxing der Klasse auf die Basisklasse |
object | void | gibt AutomationNull.Value zurück
|
object | String | gibt value.ToString() zurück
|
object | Boolean | gibt das Ergebnis von LanguagePrimitives.IsTrue(value) zurück
|
object | PSObject | gibt PSObject.AsPSObject(value) zurück
|
object | XMLDocument | ruft die value.ToString() -Methode auf und übergibt das Ergebnis dem XMLDocument Konstruktor
|
object | Nullable<T> | das Objekt wird mit (T)value convertiert und als Nullable-Monade zurückgegeben
|
Array | Array | Konvertierung der einzelnen Array-Elemente |
IDictionary | Hashtable | gibt new Hashtable(value) zurück
|
String | Char[] | gibt value.ToCharArray() zurück
|
String | RegEx | gibt new RegEx(value) zurück
|
String | Type | Deserialisierung über RunSpaceConfiguration.Assemblies
|
String | Numeric | 0 für String.Empty . Versucht den Wert mit Culture.InvariantCulture zu parsen.
|
Integer | System.Enum | Liefert den Enum-Wert zurück, der dem Integer zugewiesen ist. throw new PSInvalidCastException() falls das nicht möglich ist.
|
Provider
Provider sind PowerShell-SnapIns, welche z. B. den Zugriff auf hierarchische Daten (NavigationCmdletProvider
) oder Schlüssel-Wert Paare (ContainerCmdletProvider
) ermöglichen. Abhängig vom Typ des Providers wird eine bestimmte Menge an Cmdlets bereitgestellt. Die aktiven Provider können mit dem Befehl Get-PSProvider
aufgerufen werden.
Name | Typ | Aufgabe |
---|---|---|
Alias | Container | Bindet ein logisches Laufwerk mit dem Namen „Alias:“ ein. Über dieses Laufwerk lassen sich als Schlüssel-Wert Paare definierte Alias (etwa mit Get-ChildItem Alias: ) abrufen.
|
Environment | Container | Bindet ein logisches Laufwerk mit dem Namen „env:“ ein. Über dieses Laufwerk lassen sich die Umgebungsvariablen abfragen. |
FileSystem | Navigation | Über den FileSystem Provider wird der Zugriff auf das Dateisystem ermöglicht. Über den FileSystem-Provider können Laufwerke, Wechseldatenträger, Netzlaufwerke, u.ä., sowie die darauf befindlichen Dateien und Ordner zugegriffen werden. Laufwerke werden dabei jedoch nicht als logisches Laufwerk in PowerShell integriert, sondern als Referenz im Function-Provider hinterlegt. |
Function | Container | Verwaltet Funktionen, welche mit New-Item erstellt oder in einem PowerShell-Skript deklariert wurden.
|
Registry | Navigation | Ermöglicht unter Windows den Zugriff auf die Registrierungsdatenbank. Standardmäßig werden die Laufwerke „HKLM:“ (für HKEY_LOCAL_MACHINE ) und „HKLU:“ (für HKEY_LOCAL_USER ) erstellt. Weitere Laufwerke lassen sich bei Bedarf mit New-PSDrive (z. B. New-PSDrive -name HKLU -psprovider Registry -root HKEY_USERS ) anlegen.
|
Variable | Container | Verwaltet die im PowerShell-Host erstellten Variablen und deren Werte und bindet diese als logisches Laufwerk „Variable:“ ein. |
Certificate | Navigation | Verwaltet die Sicherheitszertifikate des Systems und bindet sich als logisches Laufwerk „Cert:“ ein. Der Certificate-Provider wird von Get-PSProvider nicht aufgelistet.
|
Skripts
PowerShell Skripte können in einer Skript-Datei zusammengefasst werden. Skript-Dateien enthalten Funktionen mit zugehöriger Beschreibung in einem Kommentarblock, sowie Variablen und Befehle. Skript-Dateien haben die Endung .ps1
und werden mit dem Befehl .
, gefolgt vom vollständigen Namen der Datei geladen und verarbeitet.
- Beispiel
<#
.SYNOPSIS
Hello World Application.
.Description
This script is a more complex Hello World function that intends to show some of the syntax of PowerShell.
To use it, write ". ./Write-Hello.ps1" (dot, space, filename) into your PowerShell first, so that the script gets loaded.
.NOTES
File Name: Write-Hello.ps1
.EXAMPLE
Write-Hello "World"
greet "World"
.EXAMPLE
Write-Hello
Write-Hello "World"
Write-Hello -Name "World"
"World" | Write-Hello
@("Jack", "Jill") | Write-Hello
.ALIAS
greet
.LINK
http://de.wikipedia.org/wiki/PowerShell
.INPUTTYPE
Takes a name of type [string].
.RETURNVALUE
Output a greeting of type [string].
.PARAMETER Name
The name of the person to greet. Greets the world by default.
#>
function Write-Hello
{
param(
# get name parameter form the pipeline or as a parameter
[Parameter(Mandatory = $False, Position = 0, ValueFromPipeline = $True, HelpMessage = "The name to greet.")]
[string]$Name
)
begin {
# load assemblies from Global Assembly Cache (deprecated method)
[void][System.Reflection.Assembly]::LoadWithPartialName("System.Exception")
# cancel the execution if an error occurs
$ErrorActionPreference = "Stop"
}
#process once for every input that was given
process {
# check input; set a default values
if([string]::IsNullOrEmpty($Name)) {
$Name = "World"
}
try {
if($Name -eq "Error") {
throw New-Object System.Exception("The name must not be 'Error'.")
}
}
catch [System.Exception] {
Write-Error $_
}
# process the request
[string]$Greeting = [string]::Format("Hello {0}!", $Name)
# outputs a string object to the PowerShell pipeline
# note: using write-host calls .ToString() method on the returned object
Write-Output $Greeting
}
end {
}
}
# setting an alias
Set-Alias greet Write-Hello
Module
Funktionen, Typdefinitionen, Snap-Ins, Cmdlets und Provider können zu einem Modul zusammengefasst werden. Die Umgebungsvariable $env:PSModulePath
zeigt auf die Verzeichnisse, in denen die PowerShell Konsole nach Modulen sucht um diese beim Start automatisch einzubinden.
Module werden nicht mit InstallUtil.exe installiert, sondern lediglich in das entsprechende Verzeichnis kopiert. Die Befehle um Module zu verwalten erhält man mit Get-Command *-Module*
. Module können mit Hilfe des Befehls New-Module
und das zugerörige Manifest mit New-ModuleManifest
erzeugt werden.
Ein Modulskript bindet PowerShell-Skripte ein und exportiert Funktionen, Cmdlet`s, Variablen und Aliase, welche vom Benutzer verwendet werden sollen, mit Export-ModuleMember
.
Beispiele
Gib die Zeichenfolge "Hallo Welt!" auf der Konsole aus:
Write-Host "Hallo Welt!"
Beende alle Prozesse, deren Namen mit dem Buchstaben „p“ beginnen:
Get-Process p* | Stop-Process
Suche alle Prozesse, die mehr als 10 MB Hauptspeicher verwenden, und beende sie:
Get-Process | where { $_.WS -gt 10MB } | Stop-Process
Berechne die Gesamtanzahl der Bytes aller Dateien in einem Verzeichnis:
Get-ChildItem | Measure-Object -Property Length -Sum
Warte, bis ein bestimmter Prozess beendet wurde:
$processToWatch = Get-Process notepad
$processToWatch.WaitForExit()
Ändere eine Zeichenkette von Kleinbuchstaben in Großbuchstaben:
"hallo welt!".ToUpper()
Füge die Zeichenfolge „ABC“ nach dem ersten Buchstaben des Wortes „string“ ein, um als Ergebnis „sABCtring“ zu erhalten:
"string".Insert(1, "ABC")
Lade einen bestimmten RSS-Feed herunter und zeige die Überschriften der acht neuesten Einträge:
$rssUrl = "http://blogs.msdn.com/b/powershell/rss.aspx"
$blog = [xml](New-Object System.Net.WebClient).DownloadString($rssUrl)
$blog.rss.channel.item | select title -First 8
Lösche die komplette Festplatte ohne Rückfrage, Äquivalent zu rm -rf / unter Unix:
Get-PSDrive -p "FileSystem" | % { ls -Recurse $_.Root | rm –Force }
Dateiendungen
- .ps1 – Windows PowerShell Shell-Skript
- .ps1xml – Windows PowerShell Format- und Typdefinitionen
- .psc1 – Windows PowerShell Konsolendatei (exportierte Shell-Konfiguration)
- .psd1 – Windows PowerShell Datendatei
- .psm1 – Windows PowerShell Moduldatei
Software-Unterstützung
Unterstützt werden unter anderem folgende Systeme:
Software | Version | Cmdlets | Provider | Grafische Benutzeroberfläche |
---|---|---|---|---|
Microsoft Exchange Server | 2007 | ja (402) | ja | ja |
Microsoft Exchange Server | 2010 | ja | ja | ja |
Microsoft Windows Server | 2008 | ja | ja | nein |
Microsoft Windows Server | 2008 Core | nein | nein | nein |
Microsoft Windows Server | 2008 R2 Core | ja | nein | nein |
Microsoft SQL Server | 2008 | ja | ja | nein |
SharePoint | 2010, 2013 | ja | ja | nein |
Microsoft System Center Operations Manager | 2007 | ja (74) | ja | nein |
Microsoft System Center Virtual Machine Manager | 2007 | ja | ja | ja |
Microsoft System Center Data Protection Manager | 2007 | ja | nein | nein |
Microsoft Windows Compute Cluster Server | 2007 | ja | ja | nein |
Microsoft Transporter Suite for Lotus Domino[7] | 08.02.0012 | ja (47) | nein | nein |
Microsoft PowerTools for Open XML[8] | 1.0 | ja (33) | nein | nein |
IBM WebSphere MQ[9] | 6.0.2.2 | ja (44) | nein | nein |
Quest Management Shell for Active Directory[10] | 1.1 | ja (40) | nein | nein |
Special Operations Software Specops Command[11] | 1.0 | ja | nein | ja |
VMware Infrastructure Toolkit[12] | 1.0 Update 1 | ja (125) | nein | nein |
Internet Information Services[13] | 7.0 | ja (54) | ja | nein |
Microsoft Windows 7 Troubleshooting Center | 6.1 | ja | nein | ja |
Microsoft Deployment Toolkit | 2010 | ja | nein | nein |
LOGINventory | 5.x | ja | ja | ja |
Quellen
- ↑ The powershell Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 30. Oktober 2018).
- ↑ Informationen zur PowerShell 2.0
- ↑ Windows Management Framework 4.0. Microsoft, abgerufen am 24. Oktober 2013.
- ↑ Jeffrey Snover: Windows Management Framework V5 Preview. In: Windows Server Blog. Microsoft, 3. April 2014, abgerufen am 13. April 2014 (englisch).
- ↑ Der Taskkill Befehl, videonerd.de
- ↑ Approved Verbs for Windows PowerShell Commands. In: Windows Dev Center. Microsoft, abgerufen am 3. August 2013 (englisch).
- ↑ Microsoft Transporter Suite for Lotus Domino. Abgerufen am 18. Februar 2008.
- ↑ PowerTools for Open XML. Abgerufen am 20. Juni 2008.
- ↑ MO74: WebSphere MQ – Windows Powershell Library. Abgerufen am 18. Februar 2008.
- ↑ PowerShell Commands for Active Directory by Quest Software. Abgerufen am 2. Juli 2008.
- ↑ PowerShell Remoting through Group Policy. Abgerufen am 18. Februar 2008.
- ↑ VMware Infrastructure Toolkit for Windows. Abgerufen am 26. November 2008.
- ↑ Windows PowerShell : IIS7 PowerShell Provider Tech Preview 2. Abgerufen am 3. Juli 2008.
Literatur
Deutsch
- Ulrich Cuber: Windows PowerShell. Mitp-Verlag 2007, ISBN 978-3-8266-1673-0.
- Lee Holmes, Rolf Masuch: Windows PowerShell 3.0 kurz & gut. 3. Auflage. O'Reilly, 2013, ISBN 978-3-95561-055-5.
- Peter Monadjemi: Windows PowerShell – Crashkurs. Microsoft Press Deutschland 2007, ISBN 978-3-86645-617-4.
- Andy Oakley: Schnelleinstieg in die Windows PowerShell. O’Reilly Verlag 2007, ISBN 978-3-89721-487-3.
- Bruce Payette: Windows PowerShell im Einsatz. Hanser Fachbuchverlag 2007, ISBN 978-3-446-41239-2.
- Holger Schwichtenberg: Windows PowerShell. Addison-Wesley 2007, ISBN 978-3-8273-2533-4.
- Holger Schwichtenberg: Windows Scripting. Automatisierte Systemadministration mit dem Windows Script Host und der Windows PowerShell. Addison-Wesley 2007, ISBN 978-3-8273-2423-8.
- Helma Spona: Windows PowerShell. Sprachgrundlagen, Dateisystem, Datenbankzugriffe, WMI-Steuerung. Galileo Press 2007, ISBN 978-3-89842-880-4.
- Tobias Weltner: Scripting mit Windows PowerShell – Einsteiger-Workshop. Microsoft Press Deutschland 2007, ISBN 978-3-86645-620-4.
- Tobias Weltner: PowerShell Scripting für Administratoren. Microsoft Press Deutschland 2008, ISBN 978-3-86645-635-8.
Englisch
- Jerry Lee Ford Jr.: Microsoft Windows Powershell Programming for the Absolute Beginner. Course Technology Ptr 2007, ISBN 1-59863-354-6.
- Lee Holmes: Windows PowerShell Quick Reference. O’Reilly 2006, ISBN 0-596-52813-2.
- Don Jones: An Introduction to Microsoft® PowerShell™. Realtimepublishers.com 2006.
- Don Jones, Jeffery Hicks: Windows PowerShell™: TFM®. SAPIEN Press 2006, ISBN 0-9776597-1-2.
- Tyson Kopczynski: Microsoft Powershell Unleashed. Sams Publishing 2007, ISBN 0-672-32953-0.
- Andy Oakley: Monad – Introducing the MSH Command Shell and Language. O’Reilly 2006, ISBN 0-596-10009-4.
- Bruce Payette: Windows PowerShell in Action. Manning Publications, ISBN 1-932394-90-7.
- Andrew Watt: Professional Windows PowerShell. Wrox Press 2007, ISBN 0-471-94693-1.
- Ed Wilson: Microsoft® Windows PowerShell™ Step By Step. Microsoft Press 2007, ISBN 0-7356-2395-3.
- Steve Seguis: Windows PowerShell 2 for Dummies, ISBN 978-0-470-37198-5
- Arul Kumaravel, Jon White, Michael Naixin Li, Scott Happell, Guohui Xie, Krishna C. Vutukuri: Professional Windows PowerShell Programming: Snapins, Cmdlets, Hosts and Providers (= Wrox Professional Series). 1. Auflage. John Wiley & Sons, 2008, ISBN 978-0-470-17393-0 (englisch, Standardwerk zur PowerShell-Entwicklung mit C#).
Weblinks
- Schnellreferenzen
- Windows PowerShell Quick Reference. In: Download Center. Microsoft, abgerufen am 6. August 2013 (englisch).
- Windows PowerShell Quick Reference
- Einführung
- Microsoft TechnNet: Skripterstellung mit Windows PowerShell – Microsofts Einstiegs-Seite zur Windows PowerShell
- Die Neuerungen von PowerShell 3.0 im Überblick
- Muschelzucht im Ausland – PowerShell-Artikel erschienen im Linux-Magazin 2006/12
- PowerShell für Exchange und Sharepoint - ADMIN-Magazin 01/2011
- Wikis und Blogs
- Inoffizielles PowerShell-Wiki auf Channel 9 (en) – Informationen, kurzer Überblick über die Skriptsprache, Beispielskripte, etc. im Internet Archive vom 2. September 2010
- Weblog des PowerShell-Entwicklerteams (en) – Informationen und Neuigkeiten zur PowerShell aus erster Hand
- Cmdlets und Module
- PowerGUI. Abgerufen am 6. August 2013 (englisch, PowerShell Community und Anbieter eines kostenlosen Grafischen User Interfaces und Skripteditor für Microsoft Windows Powershell).
- Windows PowerShell for Windows Server 2012 and Windows 8. In: TechNet. Microsoft, abgerufen am 6. August 2013 (englisch).
- Script Center. In: TechNet. Microsoft, abgerufen am 6. August 2013 (englisch).
- PowerShell scripts, modules and cmdlets for IT Admins. In: CodePlex. Abgerufen am 6. August 2013 (englisch).
- Popular PowerShell Modules. In: TechNet. Microsoft, abgerufen am 6. August 2013 (englisch, Übersicht über häufig genutzte PowerShell Module).
- Portierungen
- BDD und Unit Testing Frameworks
- Pester. In: Github. Abgerufen am 16. April 2014.
- PS Unit. In: CodePlex. Abgerufen am 16. April 2014.
- PsText. Abgerufen am 16. April 2014.
- Sonstiges
- Adam R Driscoll: PowerShell Tools for Visual Studio. In: Visual Studio Gallery. Microsoft, abgerufen am 12. April 2014 (englisch).