Partager via


Start-Job

Démarre une tâche en arrière-plan PowerShell.

Syntaxe

ComputerName (Par défaut)

Start-Job
    [-ScriptBlock] <ScriptBlock>
    [[-InitializationScript] <ScriptBlock>]
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

DefinitionName

Start-Job
    [-DefinitionName] <String>
    [[-DefinitionPath] <String>]
    [[-Type] <String>]
    [<CommonParameters>]

FilePathComputerName

Start-Job
    [-FilePath] <String>
    [[-InitializationScript] <ScriptBlock>]
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

LiteralFilePathComputerName

Start-Job
    [[-InitializationScript] <ScriptBlock>]
    -LiteralPath <String>
    [-Name <String>]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-RunAs32]
    [-PSVersion <Version>]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathVMId

Start-Job
    [-VMGuid] <Guid[]>
    [<CommonParameters>]

VMId

Start-Job
    [-VMGuid] <Guid[]>
    [<CommonParameters>]

FilePathVMName

Start-Job
    -VMName <String[]>
    [<CommonParameters>]

VMName

Start-Job
    -VMName <String[]>
    [<CommonParameters>]

Description

L’applet de commande Start-Job démarre un travail en arrière-plan PowerShell sur l’ordinateur local.

Un travail en arrière-plan PowerShell exécute une commande sans interagir avec la session active. Lorsque vous démarrez un travail en arrière-plan, un objet de travail retourne immédiatement, même si le travail prend un certain temps pour se terminer. Vous pouvez continuer à travailler dans la session sans interruption pendant l'exécution de la tâche.

L’objet de travail contient des informations utiles sur le travail, mais il ne contient pas les résultats du travail. Une fois le travail terminé, utilisez l’applet de commande Receive-Job pour obtenir les résultats du travail. Pour plus d’informations sur les tâches en arrière-plan, consultez about_Jobs.

Pour exécuter un travail en arrière-plan sur un ordinateur distant, utilisez le paramètre AsJob 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.

À compter de PowerShell 3.0, Start-Job pouvez démarrer des instances de types de travaux personnalisés, telles que des travaux planifiés. Pour plus d’informations sur l’utilisation de Start-Job pour démarrer des travaux avec des types personnalisés, consultez les documents d’aide pour la fonctionnalité de type de travail.

Exemples

Exemple 1 : Démarrer un travail en arrière-plan

Cet exemple démarre un travail qui s’exécute en arrière-plan sur l’ordinateur local.

Start-Job -ScriptBlock {Get-Process}
Id  Name   PSJobTypeName   State     HasMoreData   Location    Command
--  ----   -------------   -----     -----------   --------    -------
1   Job1   BackgroundJob   Running   True          localhost   Get-Process

Start-Job utilise le paramètre ScriptBlock pour exécuter Get-Process en tant que travail en arrière-plan. Les informations sur le travail sont affichées et PowerShell retourne à une invite pendant que le travail s’exécute en arrière-plan.

Exemple 2 : Démarrer un travail à l’aide de Invoke-Command

Cet exemple exécute un travail sur plusieurs ordinateurs. Le travail est stocké dans une variable et est exécuté à l’aide du nom de la variable sur la ligne de commande PowerShell.

$jobWRM = Invoke-Command -ComputerName (Get-Content -Path C:\Servers.txt) -ScriptBlock {
   Get-Service -Name WinRM } -JobName WinRM -ThrottleLimit 16 -AsJob

Un travail qui utilise Invoke-Command est créé et stocké dans la variable $jobWRM. Invoke-Command utilise le paramètre ComputerName pour spécifier les ordinateurs sur lesquels le travail s’exécute. Get-Content obtient les noms du serveur à partir du fichier C:\Servers.txt.

Le paramètre ScriptBlock spécifie une commande qui Get-Service obtient le service WinRM. Le paramètre JobName spécifie un nom convivial pour la tâche, WinRM. Le paramètre ThrottleLimit limite le nombre de commandes simultanées à 16. Le paramètre AsJob démarre un travail en arrière-plan qui exécute la commande sur les serveurs.

Exemple 3 : Obtenir des informations sur le travail

Cet exemple obtient des informations sur un travail et affiche les résultats d’un travail terminé qui a été exécuté sur l’ordinateur local.

$j = Start-Job -ScriptBlock { Get-WinEvent -Log System } -Credential Domain01\User01
$j | Select-Object -Property *
State         : Completed
HasMoreData   : True
StatusMessage :
Location      : localhost
Command       : Get-WinEvent -Log System
JobStateInfo  : Completed
Finished      : System.Threading.ManualResetEvent
InstanceId    : 27ce3fd9-40ed-488a-99e5-679cd91b9dd3
Id            : 18
Name          : Job18
ChildJobs     : {Job19}
PSBeginTime   : 8/8/2019 14:41:57
PSEndTime     : 8/8/2019 14:42:07
PSJobTypeName : BackgroundJob
Output        : {}
Error         : {}
Progress      : {}
Verbose       : {}
Debug         : {}
Warning       : {}
Information   : {}

Start-Job utilise le paramètre ScriptBlock pour exécuter une commande qui spécifie Get-WinEvent pour obtenir le journal du système. Le paramètre Credential spécifie un compte d’utilisateur de domaine avec l’autorisation d’exécuter le travail sur l’ordinateur. L’objet de travail est stocké dans la variable $j.

L’objet de la variable $j est envoyé dans le pipeline jusqu’à Select-Object. Le paramètre Property spécifie un astérisque (*) pour afficher toutes les propriétés de l’objet de travail.

Exemple 4 : Exécuter un script en tant que travail en arrière-plan

Dans cet exemple, un script sur l’ordinateur local est exécuté en tant que travail en arrière-plan.

Start-Job -FilePath C:\Scripts\Sample.ps1

Start-Job utilise le paramètre FilePath pour spécifier un fichier de script stocké sur l’ordinateur local.

Exemple 5 : Obtenir un processus à l’aide d’un travail en arrière-plan

Cet exemple utilise un travail en arrière-plan pour obtenir un processus spécifié par son nom.

Start-Job -Name PShellJob -ScriptBlock { Get-Process -Name PowerShell }

Start-Job utilise le paramètre Name pour spécifier un nom de travail convivial PShellJob. Le paramètre ScriptBlock spécifie Get-Process pour obtenir des processus portant le nom PowerShell.

Exemple 6 : Collecter et enregistrer des données à l’aide d’un travail en arrière-plan

Cet exemple démarre un travail qui collecte une grande quantité de données cartographiques, puis l’enregistre dans un fichier .tif.

Start-Job -Name GetMappingFiles -InitializationScript {Import-Module MapFunctions} -ScriptBlock {
   Get-Map -Name * | Set-Content -Path D:\Maps.tif } -RunAs32

Start-Job utilise le paramètre Name pour spécifier un nom de travail convivial, GetMappingFiles. Le paramètre InitializationScript exécute un bloc de script qui importe le module MapFunctions. Le paramètre ScriptBlock s’exécute Get-Map et Set-Content enregistre les données à l’emplacement spécifié par le paramètre Path. Le paramètre RunAs32 exécute le processus en tant que 32 bits, même sur un système d’exploitation 64 bits.

Exemple 7 : Passer une entrée à un travail en arrière-plan

Cet exemple utilise la variable automatique $input pour traiter un objet d’entrée. Utilisez Receive-Job pour afficher le résultat de la tâche.

Start-Job -ScriptBlock { Get-Content $input } -InputObject "C:\Servers.txt"
Receive-Job -Name Job45 -Keep
Server01
Server02
Server03
Server04

Start-Job utilise le paramètre ScriptBlock pour exécuter Get-Content avec la variable automatique $input. La variable $input obtient des objets du paramètre InputObject. Receive-Job utilise le paramètre Name pour spécifier le travail et générer les résultats. Le paramètre Keep enregistre le résultat du travail afin qu’il puisse être consulté à nouveau pendant la session PowerShell.

Paramètres

-ArgumentList

Spécifie un tableau d’arguments, ou valeurs de paramètre, pour le script spécifié par le paramètre FilePath .

Étant donné que toutes les valeurs qui suivent le nom du paramètre ArgumentList sont interprétées comme étant des valeurs de ArgumentList, spécifiez ce paramètre comme dernier paramètre de la commande.

Propriétés du paramètre

Type:

Object[]

Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:Args

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Authentication

Spécifie le mécanisme utilisé pour authentifier les informations d’identification de l’utilisateur.

Les valeurs acceptables pour ce paramètre sont les suivantes :

  • Par défaut
  • Élémentaire
  • Credssp
  • Résumé
  • Kerberos
  • Négocier
  • NegotiateWithImplicitCredential

La valeur par défaut est Default.

L’authentification CredSSP est disponible uniquement dans Windows Vista, Windows Server 2008 et versions ultérieures du système d’exploitation Windows.

Pour plus d’informations sur les valeurs de ce paramètre, consultez AuthenticationMechanism.

Avertissement

L’authentification CredSSP (Credential Security Support Provider), dans laquelle les informations d’identification de l’utilisateur sont transmises à un ordinateur distant à authentifier, est conçue pour les commandes qui nécessitent une authentification sur plusieurs ressources, telles que l’accès à un partage réseau distant. Ce mécanisme augmente le risque de sécurité de l’opération à distance. Si l’ordinateur distant est compromis, les informations d’identification qui lui sont transmises peuvent être utilisées pour contrôler la session réseau.

Propriétés du paramètre

Type:AuthenticationMechanism
Valeur par défaut:Default
Valeurs acceptées:Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Credential

Spécifie un compte d’utilisateur autorisé à effectuer cette action. Si le paramètre Credential n’est pas spécifié, la commande utilise les informations d’identification de l’utilisateur actuel.

Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01, ou entrez un objet PSCredential, tel qu’un de l’applet de commande Get-Credential.

Propriétés du paramètre

Type:PSCredential
Valeur par défaut:Current user
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-DefinitionName

Spécifie le nom de définition du travail démarré par cette applet de commande. Utilisez ce paramètre pour démarrer des types de travaux personnalisés qui ont un nom de définition, tel que des travaux planifiés.

Lorsque vous utilisez Start-Job pour démarrer une instance d’un travail planifié, le travail démarre immédiatement, quel que soit le déclencheur de travail ou les options de travail. L’instance de travail résultante est une tâche planifiée, mais elle n’est pas enregistrée sur le disque, comme les travaux planifiés déclenchés. Vous ne pouvez pas utiliser le paramètre ArgumentList de Start-Job pour fournir des valeurs pour les paramètres des scripts qui s’exécutent dans un travail planifié. Pour plus d’informations, consultez about_Scheduled_Jobs.

Ce paramètre a été introduit dans PowerShell 3.0.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

DefinitionName
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-DefinitionPath

Spécifie le chemin d’accès de la définition du travail démarré par cette applet de commande. Entrez le chemin de définition. La concaténation des valeurs des paramètres DefinitionPath et DefinitionName est le chemin complet de la définition du travail. Utilisez ce paramètre pour démarrer des types de travaux personnalisés qui ont un chemin de définition, tel que des travaux planifiés.

Pour les travaux planifiés, la valeur du paramètre DefinitionPath est $home\AppData\Local\Windows\PowerShell\ScheduledJob.

Ce paramètre a été introduit dans PowerShell 3.0.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

DefinitionName
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-FilePath

Spécifie un script local que Start-Job exécute en tant que travail en arrière-plan. Entrez le chemin d’accès et le nom du fichier du script ou utilisez le pipeline pour envoyer un chemin de script à Start-Job. Le script doit se trouver sur l’ordinateur local ou dans un dossier auquel l’ordinateur local peut accéder.

Lorsque vous utilisez ce paramètre, PowerShell convertit le contenu du fichier de script spécifié en bloc de script et exécute le bloc de script en tant que travail en arrière-plan.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

FilePathComputerName
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InitializationScript

Spécifie les commandes qui s’exécutent avant le démarrage du travail. Placez les commandes entre accolades ({}) pour créer un bloc de script.

Utilisez ce paramètre pour préparer la session dans laquelle le travail s’exécute. Par exemple, vous pouvez l’utiliser pour ajouter des fonctions, des composants logiciels enfichables et des modules à la session.

Propriétés du paramètre

Type:ScriptBlock
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:1
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-InputObject

Spécifie l'entrée de la commande. Entrez une variable qui contient 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.

Propriétés du paramètre

Type:PSObject
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:True
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-LiteralPath

Spécifie un script local que cette cmdlet exécute en arrière-plan. Saisissez le chemin d’accès à un script sur l’ordinateur local.

Start-Job utilise la valeur du paramètre LiteralPath exactement tel qu’il est typé. Aucun caractère n'est interprété en tant que caractère générique. Si le chemin d’accès inclut des caractères d’échappement, mettez-le entre des guillemets simples. Les guillemets simples indiquent à PowerShell de ne pas interpréter de caractères comme séquences d’échappement.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:PSPath

Jeux de paramètres

LiteralFilePathComputerName
Position:Named
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Name

Spécifie un nom convivial pour le nouveau travail. Vous pouvez utiliser le nom pour identifier le travail avec d’autres applets de commande de travaux, telles que l’applet de commande Stop-Job.

Le nom convivial par défaut est Job#, où # est un nombre ordinal incrémenté pour chaque travail.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:True
Valeur des arguments restants:False

-PSVersion

Spécifie une version. Start-Job exécute le travail avec la version de PowerShell. Les valeurs acceptables pour ce paramètre sont les suivantes : 2.0 et 3.0.

Ce paramètre a été introduit dans PowerShell 3.0.

Propriétés du paramètre

Type:Version
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-RunAs32

Indique que Start-Job exécute le travail dans un processus 32 bits. RunAs32 force le travail à s’exécuter dans un processus 32 bits, même sur un système d’exploitation 64 bits.

Sur les versions 64 bits de Windows 7 et Windows Server 2008 R2, lorsque la commande Start-Job inclut le paramètre RunAs32, vous ne pouvez pas utiliser le paramètre d’informations d’identification pour spécifier les informations d’identification d’un autre utilisateur.

Propriétés du paramètre

Type:SwitchParameter
Valeur par défaut:False
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

ComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
FilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False
LiteralFilePathComputerName
Position:Named
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-ScriptBlock

Spécifie les commandes à exécuter dans le travail en arrière-plan. Placez les commandes entre accolades ({}) pour créer un bloc de script. Utilisez la variable automatique $input pour accéder à la valeur du paramètre InputObject. Ce paramètre est obligatoire.

Propriétés du paramètre

Type:ScriptBlock
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False
Alias:Commande

Jeux de paramètres

ComputerName
Position:0
Obligatoire:True
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

-Type

Spécifie le type personnalisé pour les travaux démarrés par Start-Job. Entrez un nom de type de travail personnalisé, tel que PSScheduledJob pour les travaux planifiés ou PSWorkflowJob pour les travaux de flux de travail. Ce paramètre n’est pas valide pour les travaux en arrière-plan standard.

Ce paramètre a été introduit dans PowerShell 3.0.

Propriétés du paramètre

Type:String
Valeur par défaut:None
Prend en charge les caractères génériques:False
DontShow:False

Jeux de paramètres

DefinitionName
Position:2
Obligatoire:False
Valeur du pipeline:False
Valeur du pipeline par nom de propriété:False
Valeur des arguments restants:False

CommonParameters

Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.

Entrées

String

Vous pouvez utiliser le pipeline pour envoyer un objet avec la propriété Name au paramètre Name . Par exemple, vous pouvez canaliser un objet FileInfo de Get-ChildItem à Start-Job.

Sorties

System.Management.Automation.PSRemotingJob

Start-Job renvoie un objet PSRemotingJob qui représente le travail qu’il a démarré.

Notes

Pour s’exécuter en arrière-plan, Start-Job s’exécute dans sa propre session au sein de la session actuelle. 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 dans la session à distance.