Démarre une tâche Windows PowerShell en arrière-plan.
Syntaxe
Start-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>]
Description
L'applet de commande Start-Job démarre une tâche Windows PowerShell en arrière-plan sur l'ordinateur local.
Une tâche en arrière-plan Windows PowerShell exécute une commande « en arrière-plan » sans interagir avec la session active. Lorsque vous démarrez une tâche en arrière-plan, un objet de traitement est retourné immédiatement, même si la tâche prend plus de temps à s'exécuter. Vous pouvez continuer à travailler dans la session sans interruption pendant que la tâche s'exécute.
L'objet de traitement contient des informations utiles sur la tâche, mais il ne contient pas les résultats de la tâche. Lorsque la tâche se termine, pour obtenir ses résultats, utilisez l'applet de commande Receive-Job. Pour plus d'informations sur les tâches en arrière-plan, consultez about_Jobs.
Pour exécuter une tâche en arrière-plan sur un ordinateur distant, utilisez le paramètre AsJob qui est disponible sur de nombreuses applets de commande ou utilisez l'applet de commande Invoke-Command pour exécuter une commande Start-Job sur l'ordinateur distant. Pour plus d'informations, consultez about_Remote_Jobs.
Paramètres
-ArgumentList <Object[]>
Spécifie les arguments (valeurs de paramètre) pour le script spécifié par le paramètre FilePath.
Parce que toutes les valeurs qui suivent le nom du paramètre ArgumentList sont interprétées comme étant des valeurs d'ArgumentList, le paramètre ArgumentList doit être le dernier dans la commande.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-Authentication <AuthenticationMechanism>
Spécifie le mécanisme permettant d'authentifier les informations d'identification de l'utilisateur. Les valeurs valides sont Default, Basic, Credssp, Digest, Kerberos, Negotiate et NegotiateWithImplicitCredential. La valeur par défaut est Default.
L'authentification CredSSP n'est disponible que dans Windows Vista, Windows Server 2008 et les versions ultérieures de Windows.
Pour plus d'informations sur les valeurs de ce paramètre, consultez la description de l'énumération System.Management.Automation.Runspaces.AuthenticationMechanism dans MSDN.
ATTENTION : l'authentification CredSSP (Credential Security Service Provider), au cours de laquelle les informations d'identification de l'utilisateur sont passées à un ordinateur distant pour être authentifiées, est conçue pour les commandes qui requièrent une authentification sur plusieurs ressources, telles que l'accès à un partage réseau distant. Ce mécanisme augmente le risque de sécurité lié à l'opération distante. Si l'ordinateur distant n'est pas fiable, les informations d'identification qui lui sont passées peuvent être utilisées pour contrôler la session réseau.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-Credential <PSCredential>
Spécifie un compte d'utilisateur qui a l'autorisation d'exécuter cette action. La valeur par défaut est l'utilisateur actuel.
Tapez un nom d'utilisateur, comme « User01 » ou « Domain01\User01 », ou entrez un objet PSCredential, tel que celui généré par l'applet de commande Get-Credential.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
Current user |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-FilePath <string>
Exécute le script local spécifié comme une tâche en arrière-plan. Entrez le chemin d'accès et le nom de fichier du script, ou dirigez un chemin d'accès de script vers Start-Job. Le script doit résider sur l'ordinateur local ou dans un répertoire auquel l'ordinateur local peut accéder.
Lorsque vous utilisez ce paramètre, Windows PowerShell convertit le contenu du fichier de script spécifié en un bloc de script et exécute ce dernier comme une tâche en arrière-plan.
Obligatoire ? |
false |
Position ? |
1 |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-InitializationScript <scriptblock>
Spécifie des commandes qui s'exécutent avant le démarrage de la tâche. Placez les commandes entre accolades ( { } ) pour créer un bloc de script.
Utilisez ce paramètre pour préparer la session dans laquelle la tâche s'exécute. Par exemple, vous pouvez l'employer pour ajouter des fonctions, des composants logiciels enfichables et des modules à la session.
Obligatoire ? |
false |
Position ? |
2 |
Valeur par défaut |
aucun |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-InputObject <psobject>
Spécifie l'entrée de la commande. Entrez une variable contenant les objets, ou tapez une commande ou une expression qui génère les objets.
Dans la valeur du paramètre ScriptBlock, utilisez la variable automatique $input pour représenter les objets d'entrée.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
true (ByValue) |
Accepter les caractères génériques ? |
false |
-Name <string>
Spécifie un nom convivial pour la nouvelle tâche. Vous pouvez utiliser le nom pour identifier la tâche dans d'autres applets de commande de la tâche, telles que Stop-Job.
Le nom convivial par défaut est Job#, où « # » est un nombre ordinal incrémenté à chaque tâche.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
Job<number> |
Accepter l'entrée de pipeline ? |
true (ByPropertyName) |
Accepter les caractères génériques ? |
false |
-RunAs32
Exécute la tâche dans un processus 32 bits.
Utilisez ce paramètre pour forcer l'exécution de la tâche dans un processus 32 bits sur un système d'exploitation 64 bits.
Obligatoire ? |
false |
Position ? |
named |
Valeur par défaut |
False |
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
-ScriptBlock <scriptblock>
Spécifie les commandes à exécuter dans la tâche en arrière-plan. Placez les commandes entre accolades ( { } ) pour créer un bloc de script. Ce paramètre est obligatoire.
Obligatoire ? |
true |
Position ? |
1 |
Valeur par défaut |
|
Accepter l'entrée de pipeline ? |
false |
Accepter les caractères génériques ? |
false |
<CommonParameters>
Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.
Entrées et sorties
Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.
Entrées |
System.String Vous pouvez diriger un chemin d'accès de fichier vers Start-Job. |
Sorties |
System.Management.Automation.RemotingJob Start-Job retourne un objet qui représente la tâche démarrée. |
Remarques
Pour fonctionner en arrière-plan, Start-Job s'exécute dans sa propre session dans la session active. Lorsque vous utilisez l'applet de commande Invoke-Command pour exécuter une commande Start-Job dans une session sur un ordinateur distant, Start-Job s'exécute dans une session de la session à distance.
Exemple 1
C:\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 Description ----------- Cette commande démarre une tâche en arrière-plan qui exécute une commande Get-Process. Elle retourne un objet de traitement avec des informations sur la tâche. L'invite de commandes se réaffiche immédiatement pour que vous puissiez travailler dans la session pendant que la tâche s'exécute en arrière-plan.
Exemple 2
C:\PS>$jobWRM = invoke-command -computerName (get-content servers.txt) -scriptblock {get-service winrm} -jobname WinRM -throttlelimit 16 -AsJob Description ----------- Cette commande utilise l'applet de commande Invoke-Command et son paramètre AsJob pour démarrer une tâche en arrière-plan qui exécute une commande « get-service winrm » sur plusieurs ordinateurs. Parce que la commande s'exécute sur un serveur qui traite un trafic réseau substantiel, la commande utilise le paramètre ThrottleLimit d'Invoke-Command pour limiter à 16 le nombre de commandes simultanées. Cette commande utilise le paramètre ComputerName pour spécifier les ordinateurs sur lesquels la tâche s'exécute. La valeur du paramètre ComputerName est une commande Get-Content qui obtient le texte dans le fichier Servers.txt, un fichier de noms d'ordinateurs dans un domaine. La commande utilise le paramètre ScriptBlock pour spécifier la commande et le paramètre JobName pour spécifier un nom convivial pour la tâche.
Exemple 3
C:\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... ... Description ----------- Ces commandes gèrent une tâche en arrière-plan qui obtient tous les événements du journal Système dans l'Observateur d'événements. La tâche s'exécute sur l'ordinateur local. La première commande utilise l'applet de commande Start-Job pour démarrer la tâche. Elle utilise le paramètre Credential pour spécifier le compte d'utilisateur d'un utilisateur qui a l'autorisation d'exécuter la tâche sur l'ordinateur. Elle enregistre ensuite l'objet de traitement que Start-Job retourne dans la variable $j. À ce stade, vous pouvez reprendre votre travail pendant que la tâche ne s'achève. La deuxième commande utilise un opérateur de pipeline (|) pour passer l'objet de traitement de $j à l'applet de commande Format-List. La commande Format-List utilise le paramètre Property avec une valeur visant à tout inclure (*) afin d'afficher toutes les propriétés de l'objet de traitement dans une liste. La troisième commande affiche la valeur de la propriété JobStateInfo. Celle-ci contient l'état de la tâche. La quatrième commande utilise l'applet de commande Receive-Job pour obtenir les résultats de la tâche. Elle stocke les résultats dans la variable $results. La dernière commande affiche le contenu de la variable $results.
Exemple 4
C:\PS>start-job -filepath c:\scripts\sample.ps1 Description ----------- Cette commande exécute le script Sample.ps1 comme une tâche en arrière-plan.
Exemple 5
C:\PS>start-job -name WinRm -scriptblock {get-process winrm} Description ----------- Cette commande exécute une tâche en arrière-plan qui obtient le processus WinRM sur l'ordinateur local. Elle utilise le paramètre ScriptBlock pour spécifier la commande qui s'exécute dans la tâche en arrière-plan. Elle utilise en outre le paramètre Name pour spécifier un nom convivial pour la nouvelle tâche.
Exemple 6
C:\PS>start-job -name GetMappingFiles -initializationScript {import-module MapFunctions} -scriptblock {Get-Map -name * | set-content D:\Maps.tif} -runAs32 Description ----------- Cette commande démarre une tâche qui collecte une grande quantité de données et les enregistre dans un fichier .tif. La commande utilise le paramètre InitializationScript pour exécuter un bloc de script qui importe un module requis. Elle utilise également le paramètre RunAs32 pour exécuter la tâche dans un processus 32 bits même si l'ordinateur est équipé d'un système d'exploitation 64 bits.
Voir aussi