Startet einen Windows PowerShell-Hintergrundauftrag. (Start-Job)
NAMEStart-JobÜBERSICHTStartet einen Windows PowerShell-Hintergrundauftrag.SYNTAXStart-Job [-ScriptBlock] <scriptblock> [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>] Start-Job [[-FilePath] <string>] [[-InitializationScript] <scriptblock>] [-ArgumentList <Object[]>] [-Authentication {Default | Basic | Negotiate | NegotiateWithImplicitCredential | Credssp | Digest | Kerberos}] [-Credential <PSCredential>] [-InputObject <psobject>] [-Name <string>] [-RunAs32] [<CommonParameters>]BESCHREIBUNGMit dem Cmdlet "Start-Job" wird ein Windows PowerShell-Hintergrundauftrag auf dem lokalen Computer gestartet. In einem Windows PowerShell-Hintergrundauftrag wird ein Befehl "im Hintergrund" ohne Interaktion mit der aktuellen Sitzung ausgeführt. Wenn Sie einen Hintergrundauftrag starten, wird direkt ein Auftragsobjekt zurückgegeben, auch wenn die Ausführung des Auftrags mehr Zeit in Anspruch nimmt. Während der Auftrag ausgeführt wird, können Sie weiterhin ohne Unterbrechung in der Sitzung arbeiten. Das Auftragsobjekt enthält nützliche Informationen über den Auftrag, jedoch keine Auftragsergebnisse. Wenn der Auftrag abgeschlossen wird, können Sie die Ergebnisse mit dem Cmdlet "Receive-Job" abrufen. Weitere Informationen zu Hintergrundaufträgen finden Sie unter "about_Jobs". Mit dem AsJob-Parameter, der in vielen Cmdlets verfügbar ist, können Sie einen Hintergrundauftrag auf einem Remotecomputer auszuführen. Sie können auch mit dem Cmdlet "Invoke-Command" einen Start-Job-Befehl auf dem Remotecomputer ausführen. Weitere Informationen finden Sie unter "about_Remote_Jobs".PARAMETER-ArgumentList <Object[]> Gibt die Argumente (Parameterwerte) für das Skript an, das vom FilePath-Parameter angegeben wird. Da alle Werte, die auf den ArgumentList-Parameternamen folgen, als Werte von ArgumentList interpretiert werden, sollte der ArgumentList-Parameter der letzte Parameter im Befehl sein. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Authentication <AuthenticationMechanism> Gibt den Mechanismus an, der zum Authentifizieren der Anmeldeinformationen des Benutzers verwendet wird. Gültige Werte sind "Default", "Basic", "Credssp", "Digest", "Kerberos", "Negotiate" und "NegotiateWithImplicitCredential". Der Standardwert ist "Default". Die CredSSP-Authentifizierung ist nur in Windows Vista, Windows Server 2008 und höheren Versionen von Windows verfügbar. Weitere Informationen zu den Werten dieses Parameters finden Sie unter der Beschreibung der System.Management.Automation.Runspaces.AuthenticationMechanism-Enumeration in MSDN. VORSICHT: Die CredSSP (Credential Security Service Provider)-Authentifizierung, bei der die Anmeldeinformationen des Benutzers zur Authentifizierung an einen Remotecomputer übergeben werden, ist für Befehle konzipiert, die die Authentifizierung mehr als einer Ressource erfordern, z. B. beim Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn die Sicherheit des Remotecomputers gefährdet ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -Credential <PSCredential> Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Der Standardwert ist der aktuelle Benutzer. Geben Sie einen Benutzernamen ein, z. B. "User01" oder "Domain01\User01", oder geben Sie ein PSCredential-Objekt ein, z. B. ein Objekt aus dem Cmdlet "Get-Credential". Erforderlich? false Position? named Standardwert Aktueller Benutzer Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -FilePath <string> Führt das angegebene lokale Skript als Hintergrundauftrag aus. Geben Sie den Pfad und den Dateinamen des Skripts ein, oder übergeben Sie einen Skriptpfad über die Pipeline an Start-Job. Das Skript muss sich auf dem lokalen Computer oder in einem Verzeichnis befinden, auf das der lokale Computer zugreifen kann. Wenn Sie diesen Parameter verwenden, wird der Inhalt der angegebenen Skriptdatei Windows PowerShell in einen Skriptblock konvertiert, und der Skriptblock wird als Hintergrundauftrag ausgeführt. Erforderlich? false Position? 1 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -InitializationScript <scriptblock> Gibt die Befehle an, die vor Starten des Auftrags ausgeführt werden. Schließen Sie die Befehle in geschweifte Klammern ({}) ein, um einen Skriptblock zu erstellen. Verwenden Sie diesen Parameter, um die Sitzung vorzubereiten, in der der Auftrag ausgeführt wird. Sie können ihn z. B. verwenden, um der Sitzung Funktionen, Snap-Ins und Module hinzuzufügen. Erforderlich? false Position? 2 Standardwert Keiner Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -InputObject <psobject> Gibt die Eingabe für den Befehl an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, mit dem die Objekte generiert werden. Verwenden Sie die automatische Variable "$input" im Wert des ScriptBlock-Parameters, um die Eingabeobjekte darzustellen. Erforderlich? false Position? named Standardwert Pipelineeingaben akzeptieren?true (ByValue) Platzhalterzeichen akzeptieren?false -Name <string> Gibt einen Anzeigenamen für den neuen Auftrag an. Anhand des Namens können Sie den Auftrag gegenüber anderen Job-Cmdlets wie Stop-Job identifizieren. Der Standardanzeigename ist "Job#", wobei "#" eine Ordnungszahl darstellt, deren Wert für jeden Auftrag erhöht wird. Erforderlich? false Position? named Standardwert Job<Nummer> Pipelineeingaben akzeptieren?true (ByPropertyName) Platzhalterzeichen akzeptieren?false -RunAs32 [<SwitchParameter>] Führt den Auftrag in einem 32-Bit-Prozess aus. Verwenden Sie diesen Parameter, um zu erzwingen, dass der Auftrag auf einem 64-Bit-Betriebssystem in einem 32-Bit-Prozess ausgeführt wird. Erforderlich? false Position? named Standardwert False Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false -ScriptBlock <scriptblock> Gibt die Befehle an, die im Hintergrundauftrag ausgeführt werden sollen. Schließen Sie die Befehle in geschweifte Klammern ({}) ein, um einen Skriptblock zu erstellen. Dieser Parameter ist erforderlich. Erforderlich? true Position? 1 Standardwert Pipelineeingaben akzeptieren?false Platzhalterzeichen akzeptieren?false <CommonParameters> Dieses Cmdlet unterstützt folgende allgemeine Parameter: "Verbose", "Debug", "ErrorAction", "ErrorVariable", "WarningAction", "WarningVariable", "OutBuffer" und "OutVariable". Weitere Informationen erhalten Sie mit dem Befehl "get-help about_commonparameters".EINGABENSystem.String Sie können einen Dateipfad über die Pipeline an Start-Job übergeben.AUSGABENSystem.Management.Automation.RemotingJob Das Cmdlet "Start-Job" gibt ein Objekt zurück, das den gestarteten Auftrag darstellt.HINWEISEStart-Job wird für die Ausführung im Hintergrund in einer eigenen Sitzung innerhalb der aktuellen Sitzung ausgeführt. Wenn Sie einen Start-Job-Befehl mit dem Cmdlet "Invoke-Command" in einer Sitzung auf einem Remotecomputer ausführen, wird Start-Job in einer Sitzung innerhalb der Remotesitzung ausgeführt.Beispiele
BEISPIEL 1C:\PS>start-job -scriptblock {get-process} C:\PS> start-job -command "get-process" Id Name State HasMoreData Location Command --- ---- ----- ----------- -------- ------- 1 Job1 Running True localhost get-process Beschreibung ----------- Mit diesem Befehl wird ein Hintergrundauftrag zur Ausführung eines Get-Process-Befehls gestartet. Der Befehl gibt ein Auftragsobjekt mit Informationen über den Auftrag zurück. Die Eingabeaufforderung wird sofort angezeigt, damit Sie in der Sitzung arbeiten können, während der Auftrag im Hintergrund ausgeführt wird.BEISPIEL 2C:\PS>$jobWRM = invoke-command -computerName (get-content servers.txt) -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob Beschreibung ----------- In diesem Befehl wird mit dem Cmdlet "Invoke-Command" und den entsprechenden AsJob-Parametern ein Hintergrundauftrag gestartet, mit dem der Befehl "get-service winrm" auf vielen Computern ausgeführt wird. Da der Befehl auf einem Server mit erheblichem Netzwerkdatenverkehr ausgeführt wird, wird die Anzahl der gleichzeitigen Befehle hier mit dem ThrottleLimit-Parameter von Invoke-Command auf 16 beschränkt. Im Befehl werden mit dem ComputerName-Parameter die Computer angegeben, auf denen der Auftrag ausgeführt wird. Der Wert des ComputerName-Parameters ist ein Get-Content-Befehl, mit dem der Text in der Datei "Servers.txt" abgerufen wird, einer Datei mit Computernamen in einer Domäne. Im Befehl wird mit dem ScriptBlock-Parameter der Befehl angegeben, und mit dem JobName-Parameter wird ein Anzeigename für den Auftrag angegeben.BEISPIEL 3C:\PS>$j = start-job -scriptblock {get-eventlog -log system} -credential domain01\user01 C:\PS> $j | format-list -property * HasMoreData : True StatusMessage : Location : localhost Command : get-eventlog -log system JobStateInfo : Running Finished : System.Threading.ManualResetEvent InstanceId : 2d9d775f-63e0-4d48-b4bc-c05d0e177f34 Id : 1 Name : Job1 ChildJobs : {Job2} Output : {} Error : {} Progress : {} Verbose : {} Debug : {} Warning : {} StateChanged : C:\PS> $j.JobStateInfo.state Completed C:\PS> $results = receive-job -job $j C:\PS> $results Index Time Type Source EventID Message ----- ---- ---- ------ ------- ------- 84366 Feb 18 19:20 Information Service Control M... 7036 The description... 84365 Feb 18 19:16 Information Service Control M... 7036 The description... 84364 Feb 18 19:10 Information Service Control M... 7036 The description... ... Beschreibung ----------- Mit diesen Befehlen wird ein Hintergrundauftrag verwaltet, der alle Ereignisse aus dem Systemprotokoll in der Ereignisanzeige abruft. Der Auftrag wird auf dem lokalen Computer ausgeführt. Im ersten Befehl wird der Auftrag mit dem Cmdlet "Start-Job" gestartet. Mit dem Credential-Parameter wird das Benutzerkonto eines Benutzers angegeben, der die Berechtigung zum Ausführen des Auftrags auf dem Computer hat. Anschließend wird das Auftragsobjekt, das von Start-Job zurückgegeben wird, in der Variablen "$j" gespeichert. Während der Auftrag abgeschlossen wird, können Sie andere Tätigkeiten fortsetzen. Im zweiten Befehl wird das Auftragsobjekt in $j mit einem Pipelineoperator (|) an das Cmdlet "Format-List" übergeben. Im Befehl "Format-List" werden mit dem Property-Parameter mit dem Wert für alle (*) alle Eigenschaften des Auftragsobjekts in einer Liste angezeigt. Im dritten Befehl wird der Wert der JobStateInfo-Eigenschaft angezeigt. Dieser enthält den Status des Auftrags. Im vierten Befehl wird das Cmdlet "Receive-Job" verwendet, um die Ergebnisse des Auftrags abzurufen. Die Ergebnisse werden in der Ergebnisvariablen "$results" gespeichert. Im letzten Befehl wird der Inhalt der Variablen "$results" angezeigt.BEISPIEL 4C:\PS>start-job -filepath c:\scripts\sample.ps1 Beschreibung ----------- Mit diesem Befehl wird das Skript "Sample.ps1" als Hintergrundauftrag ausgeführt.BEISPIEL 5C:\PS>start-job -name WinRm -scriptblock {get-process winrm} Beschreibung ----------- Mit diesem Befehl wird ein Hintergrundauftrag ausgeführt, der den WinRM-Prozess auf dem lokalen Computer abruft. Der Befehl, der im Hintergrundauftrag ausgeführt wird, wird mit dem ScriptBlock-Parameter angegeben. Ein Anzeigename für den Auftrag wird mit dem Name-Parameter angegeben.BEISPIEL 6C:\PS>start-job -name GetMappingFiles -initializationScript {import-module MapFunctions} -scriptblock {Get-Map -name * | set-content D:\Maps.tif} -runAs32 Beschreibung ----------- Mit diesem Befehl wird ein Auftrag gestartet, der eine große Datenmenge sammelt und in einer TIF-Datei speichert. Der Befehl führt mithilfe des InitializationScript-Parameters einen Skriptblock aus, der ein erforderliches Modul importiert. Darüber hinaus führt er den Auftrag in einem 32-Bit-Prozess mithilfe des RunAs32-Parameters aus, auch wenn der Computer über ein 64-Bit-Betriebssystem verfügt. VERWANDTE LINKS Online version: http://go.microsoft.com/fwlink/?LinkID=113405 (möglicherweise auf Englisch) about_Jobs about_Job_Details about_Remote_Jobs Get-Job Receive-Job Wait-Job Stop-Job Remove-Job Invoke-Command C:\Windows>powershell get-help Get-Job -full
Microsoft Windows [Version 10.0.19045.3693]
Copyright (c) 2023 Microsoft Corporation.
ColorConsole [Version 3.7.1000] PowerShell 2.0-Export