Dieser Inhalt wird nicht mehr regelmäßig aktualisiert. Informationen zur Unterstützung für dieses Produkt, diesen Dienst, diese Technologie oder diese API finden Sie in der Microsoft Lifecycle-Richtlinie.
THEMA
about_Scripts
KURZBESCHREIBUNG
Beschreibt, wie Skripts in Windows PowerShell geschrieben und
ausgeführt werden.
DETAILBESCHREIBUNG
Bei einem Skript handelt es sich um eine Nur-Text-Datei, die
einen oder mehrere Windows PowerShell-Befehle enthält. Die
Dateierweiterung für Windows PowerShell-Skripts lautet ".ps1".
Durch das Schreiben eines Skripts wird ein Befehl zur späteren
Verwendung gespeichert und kann bequem für andere zugänglich
gemacht werden. Vor allem können Sie die Befehle ausführen, indem
Sie einfach den Skriptpfad und den Dateinamen eingeben. Die
Komplexität von Skripts reicht von einem einzelnen Befehl in
einer Datei bis hin zu umfassenden Programmen.
Skripts verfügen über zusätzliche Features, z. B. den speziellen
Kommentar #Requires, die Verwendung von Parametern, Unterstützung
für Datenabschnitte und das digitale Signieren für die
Sicherheit. Sie können außerdem Hilfethemen für Skripts und für
alle Funktionen im Skript schreiben.
SO SCHREIBEN SIE EIN SKRIPT
Ein Skript kann alle gültigen Windows PowerShell-Befehle
enthalten, u. a. einzelne Befehle, Befehle, die die Pipeline
verwenden, Funktionen und Steuerstrukturen, z. B. If-Anweisungen
und For-Schleifen.
Zum Schreiben eines Skripts starten Sie einen Text-Editor
(z. B. Editor) oder einen Skript-Editor (z. B. die integrierte
Skriptumgebung von Windows PowerShell (Integrated Scripting
Environment, ISE)) Geben Sie die Befehle ein, und speichern Sie
sie in einer Datei mit einem gültigen Dateinamen und der Datei-
namenerweiterung ".ps1".
Bei dem folgenden Beispiel handelt es sich um ein einfaches
Skript, das die auf dem aktuellen System ausgeführten Dienste
abruft und in einer Protokolldatei speichert. Der Name der
Protokolldatei wird auf Grundlage des aktuellen Datums erstellt.
$date = (get-date).dayofyear
get-service | out-file "$date.log"
Öffnen Sie zum Erstellen dieses Skripts einen Text-Editor oder
Skript-Editor, geben Sie diese Befehle ein, und speichern Sie sie
dann in der Datei "ServiceLog.ps1."
SO FÜHREN SIE EIN SKRIPT AUS
Bevor Sie ein Skript ausführen können, müssen Sie die Windows
PowerShell-Standardausführungsrichtlinie ändern. Durch die
Standardausführungsrichtlinie "Eingeschränkt" wird verhindert,
dass Skripts ausgeführt werden, einschließlich auf dem lokalen
Computer geschriebener Skripts. Weitere Informationen finden Sie
unter "about_Execution_Policies".
Geben Sie zum Ausführen eines Skripts den vollständigen Namen und
den vollständigen Pfad für die Skriptdatei ein.
Geben Sie z. B. zum Ausführen des Skripts "ServicesLog" im
Verzeichnis "C:\Scripts" Folgendes ein:
c:\scripts\ServicesLog.ps1
Um ein Skript im aktuellen Verzeichnis auszuführen, geben Sie den
Pfad für das aktuelle Verzeichnis an, oder geben Sie einen Punkt
ein, um das aktuelle Verzeichnis darzustellen, gefolgt von einem
umgekehrten Schrägstrich für den Pfad (.\).
Geben Sie z. B. zum Ausführen des Skripts "ServicesLog.ps1" im
lokalen Verzeichnis Folgendes ein:
.\ServicesLog.ps1
Als Sicherheitsfeature führt Windows PowerShell keine Skripts
aus, wenn Sie auf das Skriptsymbol in Windows-Explorer
doppelklicken oder den Skriptnamen ohne vollständigen Pfad
eingeben, selbst wenn sich das Skript im aktuellen Verzeichnis
befindet. Weitere Informationen zum Ausführen von Befehlen und
Skripts in Windows PowerShell finden Sie unter
"about_Command_Precedence".
REMOTEAUSFÜHREN VON SKRIPTS
Wenn Sie ein Skript auf einem Remotecomputer ausführen möchten,
verwenden Sie den FilePath-Parameter des Cmdlets "Invoke-Command".
Geben Sie als Wert des FilePath-Parameters den Pfad und Dateinamen
des Skripts ein. Das Skript muss sich auf dem lokalen Computer
oder in einem Verzeichnis befinden, auf das der lokale Computer
zugreifen kann.
Mit dem folgenden Befehl wird das Skript "ServicesLog.ps1" auf
dem Remotecomputer "Server01" ausgeführt.
invoke-command -computername Server01 -filepath C:\scripts\servicesLog.ps1
PARAMETER IN SKRIPTS
Definieren Sie Parameter in einem Skript mit einer Param-Anweisung.
Die Param-Anweisung muss die erste Anweisung in einem Skript
sein, mit Ausnahme von Kommentaren und #Requires-Anweisungen.
Die Funktion von Skriptparametern entspricht der Funktion von
Funktionsparametern. Die Parameterwerte sind für alle Befehle im
Skript verfügbar. Alle Features der Funktionsparameter,
einschließlich des Parameter-Attributs und seiner benannten
Argumente, sind auch in Skripts gültig.
Beim Ausführen des Skripts geben Skriptbenutzer die Parameter
nach dem Skriptnamen ein.
Im folgenden Beispiel wird das Skript "Test-Remote.ps1"
veranschaulicht, das über einen ComputerName-Parameter verfügt.
Beide Skriptfunktionen können auf den ComputerName-Parameterwert
zugreifen.
param ($ComputerName = $(throw "Der ComputerName-Parameter ist erforderlich."))
function CanPing {
$error.clear()
$tmp = test-connection $computername -erroraction SilentlyContinue
if (!$?)
{write-host "Fehler bei Ping: $ComputerName."; return $false}
else
{write-host "Ping erfolgreich: $ComputerName"; return $true}
}
function CanRemote {
$s = new-pssession $computername -erroraction SilentlyContinue
if ($s -is [System.Management.Automation.Remoting.Runspaces.PSSession])
{write-host "Remotetest erfolgreich: $ComputerName."}
else
{write-host "Fehler bei Remotetest: $ComputerName."}
}
if (CanPing $computername) {CanRemote $computername}
Geben Sie zum Ausführen dieses Skripts den Parameternamen nach
dem Skriptnamen ein. Beispiel:
C:\PS> .\test-remote.ps1 -computername Server01
Ping erfolgreich: Server01
Fehler bei Remotetest: Server01
Weitere Informationen zur Param-Anweisung und den Funktionspara-
metern finden Sie unter "about_Functions" und
"about_Functions_Advanced_Parameters".
HILFE FÜR SKRIPTS
Mit dem Cmdlet "Get-Help" rufen Sie die Hilfe für Skripts sowie
für Cmdlets, Anbieter und Funktionen ab. Geben Sie zum Aufrufen
der Hilfe für ein Skript "Get-Help" sowie den Pfad und den
Dateinamen des Skripts ein. Wenn sich der Skriptpfad in der
Path-Umgebungsvariablen befindet, können Sie den Pfad weglassen.
Geben Sie z. B. Folgendes ein, um Hilfe für das Skript
"ServicesLog.ps1" abzurufen:
get-help C:\admin\scripts\ServicesLog.ps1
Hilfe für ein Skript können Sie mit den beiden folgenden Methoden
erstellen:
-- Kommentarbasierte Hilfe für Skripts
Erstellen Sie ein Hilfethema, indem Sie in den Kommentaren
spezielle Schlüsselwörter verwenden. Damit Sie eine
kommentarbasierte Hilfe für ein Skript erstellen können,
müssen die Kommentare am Anfang oder dem Ende der Skriptdatei
eingefügt werden. Weitere Informationen zur kommentarbasierten
Hilfe finden Sie unter "about_Comment_Based_Help".
-- XML-basierte Hilfe für Skripts
Sie können XML-basierte Hilfethemen erstellen, z. B. zu dem
Typ, der in der Regel für Cmdlets erstellt wird. XML-basierte
Hilfe muss erstellt werden, wenn Sie Hilfethemen in mehrere
Sprachen lokalisieren.
Um ein XML-basiertes Hilfethema dem Skript zuzuordnen,
verwenden Sie das .ExternalHelp-Schlüsselwort für den
Hilfekommentar. Weitere Informationen zum ExternalHelp-Schlü-
sselwort finden Sie unter "about_Comment_Based_Help". Weitere
Informationen zur XML-basierten Hilfe finden Sie in "How to
Write Cmdlet Help" in der MSDN (Microsoft Developer Network)
Library unter "https://go.microsoft.com/fwlink/?LinkID=123415".
SKRIPTBEREICH UND DOT-QUELLENTNAHME
Jedes Skript wird in einem eigenen Bereich ausgeführt. Die
Funktionen, Variablen, Aliase und Laufwerke, die im Skript
erstellt werden, sind nur im Skriptbereich vorhanden. Sie
können auf diese Elemente oder ihre Werte nicht in dem Bereich
zugreifen, in dem das Skript ausgeführt wird.
Wenn Sie ein Skript in einem anderen Bereich ausführen möchten,
können Sie einen Bereich angeben, z. B. "Global" oder "Local",
oder das Skript als Skript mit DOT-Quellentnahme ausführen.
Durch das Feature der DOT-Quellentnahme können Sie ein Skript im
aktuellen Bereich statt in Skriptbereich ausführen. Wenn Sie ein
Skript mit DOT-Quellentnahme ausführen, werden die Befehle im
Skript ausgeführt, als hätten Sie sie an der Eingabeaufforderung
eingegeben. Die Funktionen, Variablen, Aliase und Laufwerke, die
das Skript erstellt, werden in dem Bereich erstellt, in dem Sie
arbeiten. Nachdem das Skript ausgeführt wurde, können Sie in der
Sitzung die erstellten Elemente verwenden und auf ihre Werte
zugreifen.
Geben Sie für die DOT-Quellentnahme eines Skripts einen Punkt (.)
und ein Leerzeichen vor dem Skriptpfad ein.
Beispiel:
. C:\scripts\UtilityFunctions.ps1
-oder-
. .\UtilityFunctions.ps1
Nach dem Ausführen des Skripts "UtilityFunctions" werden die
Funktionen und Variablen, die das Skript erstellt, dem aktuellen
Bereich hinzugefügt.
Das Skript "UtilityFunctions.ps1" erstellt z. B. die New-Profile-
Funktion und die $ProfileName-Variable.
#In UtilityFunctions.ps1
function New-Profile
{
Write-Host "New-Profile-Funktion wird ausgeführt"
$profileName = split-path $profile -leaf
if (test-path $profile)
{write-error "Das Profil $profileName ist auf diesem Computer bereits vorhanden."}
else
{new-item -type file -path $profile -force }
}
Wenn Sie das Skript "UtilityFunctions.ps1" in einem eigenen
Skriptbereich ausführen, sind die New-Profile-Funktion und die
$ProfileName-Variable nur vorhanden, während das Skript
ausgeführt wird. Wenn das Skript beendet wird, werden die
Funktion und die Variable entfernt, wie im folgenden Beispiel
dargestellt.
C:\PS> .\UtilityFunctions.ps1
C:\PS> New-Profile
Der Begriff "new-profile" wird nicht als Cmdlet, Funktion,
ausführbares Programm oder Skriptdatei erkannt. Überprüfen
Sie den Begriff, und versuchen Sie es erneut.
Bei Zeile:1 Zeichen:12
+ new-profile <<<<
+ CategoryInfo : ObjectNotFound: (new-profile:String) [],
+ FullyQualifiedErrorId : CommandNotFoundException
C:\PS> $profileName
C:\PS>
Wenn Sie das Skript als Skript mit DOT-Quellentnahme ausführen,
erstellt das Skript die New-Profile-Funktion und die
$ProfileName-Variable in der Sitzung in Ihrem Bereich. Nach dem
Ausführen des Skripts können Sie die New-Profile-Funktion in der
Sitzung verwenden, wie im folgenden Beispiel dargestellt.
C:\PS> . .\UtilityFunctions.ps1
C:\PS> New-Profile
Directory: C:\Users\juneb\Documents\WindowsPowerShell
Modus LastWriteTime Length Name
---- ------------- ------ ----
-a--- 1/14/2009 3:08 PM 0 Microsoft.PowerShellISE_profile.ps1
C:\PS> $profileName
Microsoft.PowerShellISE_profile.ps1
Weitere Informationen zu Bereichen finden Sie unter "about_Scopes".
SKRIPTS IN MODULEN
Bei einem Modul handelt es sich um einen Satz von verwandten
Windows PowerShell-Ressourcen, die als Einheit verteilt werden
können. Sie können mit Modulen Skripts, Funktionen und andere
Ressourcen organisieren. Außerdem können Sie mit Modulen Ihren
Code an andere verteilen und Code aus vertrauenswürdigen Quellen
abrufen.
Sie können Skripts in Modulen einschließen oder ein Skriptmodul
erstellen. Hierbei handelt es sich um ein Modul, das ganz oder
hauptsächlich aus einem Skript und unterstützenden Ressourcen
besteht. Ein Skriptmodul ist nur ein Skript mit der
Dateinamenerweiterung ".psm1".
Weitere Informationen zu Modulen finden Sie unter "about_Modules".
ANDERE SKRIPTFEATURES
Windows PowerShell verfügt über eine Vielzahl von nützlichen
Features, die Sie in Skripts verwenden können.
#Requires
Sie können mit einer #Requires-Anweisung verhindern, dass ein
Skript ohne angegebene Module oder Snap-Ins und eine
angegebene Version von Windows PowerShell ausgeführt wird.
Weitere Informationen finden Sie unter "about_Requires".
$MyInvocation
Die automatische $MyInvocation-Variable enthält Informationen
zum aktuellen Befehl, einschließlich des aktuellen Skripts.
Sie können mit dieser Variablen und ihren Eigenschaften
Informationen zu dem Skript abrufen, während es ausgeführt
wird. Die Variable "$MyInvocation.MyCommand.Path" enthält
z. B. den Pfad und Dateinamen des Skripts.
Datenabschnitte
Sie können Daten in Skripts mithilfe des Data-Schlüsselworts
von Logik trennen.
Datenabschnitte können außerdem die Lokalisierung
erleichtern. Weitere Informationen finden Sie unter
"about_Data_Sections" und "about_Script_Localization".
Skriptsignatur
Sie können einem Skript eine digitale Signatur hinzufügen.
Abhängig von der Ausführungsrichtlinie können Sie mit
digitalen Signaturen das Ausführen von Skripts einschränken,
die unsichere Befehle enthalten könnten. Weitere
Informationen finden Sie unter "about_Execution_Policies" und
"about_Signing".
SIEHE AUCH
about_Command_Precedence
about_Comment_Based_Help
about_Execution_Policies
about_Functions
about_Modules
about_Profiles
about_Requires
about_Scopes
about_Script_Blocks
about_Signing
Invoke-Command