Partager via


Start-Job

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

Concepts

about_Jobs
about_Job_Details
about_Remote_Jobs
Get-Job
Receive-Job
Wait-Job
Stop-Job
Remove-Job
Invoke-Command