Partager via


Start-Process

Démarre un ou plusieurs processus sur l'ordinateur local.

Syntaxe

Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-Credential <pscredential>]
     [-WorkingDirectory <string>]
     [-LoadUserProfile]
     [-NoNewWindow]
     [-PassThru]
     [-RedirectStandardError <string>]
     [-RedirectStandardInput <string>]
     [-RedirectStandardOutput <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-UseNewEnvironment]
     [-Environment <hashtable>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]
Start-Process
     [-FilePath] <string>
     [[-ArgumentList] <string[]>]
     [-WorkingDirectory <string>]
     [-PassThru]
     [-Verb <string>]
     [-WindowStyle <ProcessWindowStyle>]
     [-Wait]
     [-Environment <hashtable>]
     [-WhatIf]
     [-Confirm]
     [<CommonParameters>]

Description

L’applet Start-Process de commande démarre un ou plusieurs processus sur l’ordinateur local. Par défaut, Start-Process crée un processus qui hérite de toutes les variables d’environnement définies dans le processus actuel.

Pour spécifier le programme qui s’exécute dans le processus, entrez un fichier exécutable ou un fichier de script, ou un fichier qui peut être ouvert à l’aide d’un programme sur l’ordinateur. Si vous spécifiez un fichier non exécutable, Start-Process démarre le programme associé au fichier, similaire à l’applet Invoke-Item de commande.

Vous pouvez utiliser les paramètres de Start-Process spécifier des options, telles que le chargement d’un profil utilisateur, le démarrage du processus dans une nouvelle fenêtre ou l’utilisation d’autres informations d’identification.

Exemples

Exemple 1 : Démarrer un processus qui utilise des valeurs par défaut

Cet exemple démarre un processus qui utilise le Sort.exe fichier dans le dossier actif. La commande utilise toutes les valeurs par défaut, notamment le style de fenêtre par défaut, le dossier de travail et les informations d’identification.

Start-Process -FilePath "sort.exe"

Exemple 2 : Imprimer un fichier texte

Cet exemple démarre un processus qui imprime le C:\PS-Test\MyFile.txt fichier.

Start-Process -FilePath "myfile.txt" -WorkingDirectory "C:\PS-Test" -Verb Print

Exemple 3 : Démarrer un processus pour trier les éléments dans un nouveau fichier

Cet exemple démarre un processus qui trie les éléments dans le TestSort.txt fichier et retourne les éléments triés dans les Sorted.txt fichiers. Toutes les erreurs sont écrites dans le SortError.txt fichier. Le paramètre UseNewEnvironment spécifie que le processus s’exécute avec ses propres variables d’environnement.

$processOptions = @{
    FilePath = "sort.exe"
    RedirectStandardInput = "TestSort.txt"
    RedirectStandardOutput = "Sorted.txt"
    RedirectStandardError = "SortError.txt"
    UseNewEnvironment = $true
}
Start-Process @processOptions

Cet exemple utilise la mise en forme pour passer des paramètres à l’applet de commande. Pour plus d’informations, consultez about_Splatting.

Exemple 4 : Démarrer un processus dans une fenêtre agrandie

Cet exemple démarre le Notepad.exe processus. Elle agrandit la fenêtre et la conserve tant que l'exécution du processus n'est pas terminée.

Start-Process -FilePath "notepad" -Wait -WindowStyle Maximized

Exemple 5 : Démarrer PowerShell en tant qu’administrateur

Cet exemple démarre PowerShell à l’aide de l’option Exécuter en tant qu’administrateur .

Start-Process -FilePath "powershell" -Verb RunAs

Exemple 6 : Utilisation de verbes différents pour démarrer un processus

Cet exemple montre comment rechercher les verbes qui peuvent être utilisés lors du démarrage d’un processus. Les verbes disponibles sont déterminés par l’extension de nom de fichier du fichier qui s’exécute dans le processus.

$startExe = New-Object System.Diagnostics.ProcessStartInfo -Args powershell.exe
$startExe.verbs

open
runas
runasuser

L’exemple utilise New-Object pour créer un objet System.Diagnostics.ProcessStartInfo pour powershell.exe, le fichier qui s’exécute dans le processus PowerShell. La propriété Verbs de l’objet ProcessStartInfo montre que vous pouvez utiliser les verbes et RunAs Open avec powershell.exe, ou avec n’importe quel processus qui exécute un .exe fichier.

Exemple 7 : Spécification d’arguments au processus

Les deux commandes démarrent l’interpréteur de commandes Windows, en émettant une dir commande sur le Program Files dossier. Étant donné que ce nom de dossier contient un espace, la valeur doit être entourée de guillemets échapés. Notez que la première commande spécifie une chaîne en tant qu’ArgumentList. La deuxième commande est un tableau de chaînes.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c dir `"%SystemDrive%\Program Files`""
Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%SystemDrive%\Program Files`""

Exemple 8 : Créer un processus détaché sur Linux

Sur Windows, Start-Process crée un processus indépendant qui reste en cours d’exécution indépendamment de l’interpréteur de commandes de lancement. Sur les plateformes non-Windows, le processus nouvellement démarré est attaché à l’interpréteur de commandes lancé. Si l’interpréteur de commandes de lancement est fermé, le processus enfant est arrêté.

Pour éviter de mettre fin au processus enfant sur des plateformes de type Unix, vous pouvez combiner Start-Process avec nohup. L’exemple suivant lance une instance en arrière-plan de PowerShell sur Linux qui reste active même après avoir fermé la session de lancement. La nohup commande collecte la sortie dans le fichier nohup.out dans le répertoire actif.

# Runs for 2 minutes and appends output to ./nohup.out
Start-Process nohup 'pwsh -noprofile -c "1..120 | % { Write-Host . -NoNewline; sleep 1 }"'

Dans cet exemple, Start-Process exécute la commande Linux nohup , qui se lance pwsh en tant que processus détaché. Pour plus d’informations, consultez l’article nohup sur Wikipédia.

Exemple 9 : Substitution d’une variable d’environnement pour un processus

Par défaut, lorsque vous utilisez Start-Process, le nouveau processus est créé avec les mêmes variables d’environnement que la session active. Vous pouvez utiliser le paramètre Environnement pour remplacer les valeurs de ces variables.

Dans cet exemple, la variable FOO d’environnement est ajoutée à la session avec foo la valeur.

L’exemple s’exécute Start-Process trois fois, retournant la valeur de FOO chaque fois. La première commande ne remplace pas la variable d’environnement. Dans la deuxième commande, FOO est définie sur bar. Dans la troisième commande, FOO est définie sur $null, ce qui le supprime.

$env:FOO = 'foo'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO'
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
    FOO  = 'bar'
}
Start-Process pwsh -NoNewWindow -ArgumentList '-c', '$env:FOO' -Environment @{
    FOO  = $null
}

foo
bar

Paramètres

-ArgumentList

Spécifie des paramètres ou des valeurs de paramètre à utiliser lorsque cette applet de commande démarre le processus. Les arguments peuvent être acceptés en tant que chaîne unique avec les arguments séparés par des espaces, ou sous la forme d’un tableau de chaînes séparés par des virgules. L’applet de commande joint le tableau en une seule chaîne avec chaque élément du tableau séparé par un espace unique.

Les guillemets externes des chaînes PowerShell ne sont pas inclus lorsque les valeurs ArgumentList sont passées au nouveau processus. Si les paramètres ou les valeurs de paramètre contiennent un espace ou des guillemets, ils doivent être entourés de guillemets doubles échapés. Pour plus d’informations, consultez about_Quoting_Rules.

Pour obtenir les meilleurs résultats, utilisez une valeur ArgumentList unique contenant tous les arguments et tous les guillemets nécessaires.

Type:String[]
Alias:Args
Position:1
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Confirm

Vous demande une confirmation avant d’exécuter l’applet de commande.

Type:SwitchParameter
Alias:cf
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Credential

Spécifie un compte d’utilisateur qui a l’autorisation d’exécuter cette action. Par défaut, l'applet de 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 généré par l’applet Get-Credential de commande. Si vous tapez un nom d’utilisateur, vous êtes invité à entrer le mot de passe.

Les informations d’identification sont stockées dans un objet PSCredential et le mot de passe est stocké en tant que SecureString.

Remarque

Pour plus d’informations sur la protection des données SecureString , consultez Comment secure is SecureString ?.

Type:PSCredential
Alias:RunAs
Position:Named
Valeur par défaut:Current user
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Environment

Spécifie une ou plusieurs variables d’environnement à remplacer pour le processus en tant que table de hachage. Spécifiez le nom d’une variable d’environnement comme clé dans la table de hachage et la valeur souhaitée. Pour annuler la définition d’une variable d’environnement, spécifiez sa valeur en tant que $null.

Les variables spécifiées sont remplacées dans le processus. Lorsque vous spécifiez la PATH variable d’environnement, elle est remplacée par la valeur de $PSHOME suivi de la valeur spécifiée à partir de ce paramètre. Sur Windows, la commande ajoute les valeurs pour PATH les étendues Machine et Utilisateur après la nouvelle valeur.

Ce paramètre a été ajouté dans PowerShell 7.4.

Type:Hashtable
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-FilePath

Spécifie le chemin d’accès et le nom de fichier facultatifs du programme qui s’exécute dans le processus. Entrez le nom d’un fichier exécutable ou d’un document, tel qu’un ou .doc un .txt fichier, associé à un programme sur l’ordinateur. Ce paramètre est obligatoire.

Si vous spécifiez uniquement un nom de fichier qui ne correspond pas à une commande système, utilisez le paramètre WorkingDirectory pour spécifier le chemin d’accès.

Type:String
Alias:PSPath, Path
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-LoadUserProfile

Indique que cette applet de commande charge le profil utilisateur Windows stocké dans la clé de HKEY_USERS Registre de l’utilisateur actuel. Le paramètre ne s’applique pas aux systèmes non-Windows.

Ce paramètre n’affecte pas les profils PowerShell. Pour plus d’informations, consultez about_Profiles.

Type:SwitchParameter
Alias:Lup
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-NoNewWindow

Démarrez le nouveau processus dans la fenêtre de console active. Par défaut sur Windows, PowerShell ouvre une nouvelle fenêtre. Sur les systèmes non-Windows, vous n’obtenez jamais de nouvelle fenêtre.

Vous ne pouvez pas utiliser les paramètres NoNewWindow et WindowStyle dans la même commande.

Le paramètre ne s’applique pas aux systèmes non-Windows.

Type:SwitchParameter
Alias:nnw
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-PassThru

Retourne un objet processus pour chaque processus démarré par l'applet de commande. Par défaut, cette applet de commande ne génère aucune sortie.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-RedirectStandardError

Spécifie un fichier. Cette applet de commande envoie toutes les erreurs générées par le processus à un fichier que vous spécifiez. Entrez le chemin d’accès et le nom de fichier. Par défaut, les erreurs s'affichent dans la console.

Type:String
Alias:RSE
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-RedirectStandardInput

Spécifie un fichier. Cette applet de commande lit l’entrée à partir du fichier spécifié. Entrez le chemin d’accès et le nom de fichier du fichier d’entrée. Par défaut, le processus obtient son entrée à partir du clavier.

Type:String
Alias:RSI
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-RedirectStandardOutput

Spécifie un fichier. Cette applet de commande envoie la sortie générée par le processus à un fichier que vous spécifiez. Entrez le chemin d’accès et le nom de fichier. Par défaut, la sortie s'affiche dans la console.

Type:String
Alias:RSO
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-UseNewEnvironment

Indique que cette applet de commande utilise de nouvelles variables d’environnement spécifiées pour le processus. Par défaut, le processus démarré s’exécute avec les variables d’environnement héritées du processus parent.

Sur Windows, lorsque vous utilisez UseNewEnvironment, le nouveau processus commence uniquement par contenir les variables d’environnement par défaut définies pour l’étendue de l’ordinateur. Cela a l’effet secondaire que la $env:USERNAME valeur SYSTEM est définie. Aucune des variables de l’étendue utilisateur n’est incluse.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Verb

Spécifie un verbe à utiliser lorsque cette applet de commande démarre le processus. Les verbes disponibles sont déterminés par l’extension de nom de fichier du fichier qui s’exécute dans le processus.

Le tableau suivant répertorie les verbes pour quelques types de fichiers de processus courants.

Type de fichier Verbes et adverbes
.cmd Edit, , OpenPrint, , RunAsRunAsUser
.exe Open, , RunAsRunAsUser
.txt Open, , PrintPrintTo
.wav Open, Play

Pour rechercher les verbes qui peuvent être utilisés avec le fichier qui s’exécute dans un processus, utilisez l’applet New-Object de commande pour créer un objet System.Diagnostics.ProcessStartInfo pour le fichier. Les verbes disponibles se trouvent dans la propriété Verbs de l’objet ProcessStartInfo . Pour plus de détails, consultez les exemples.

Le paramètre ne s’applique pas aux systèmes non-Windows.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-Wait

Indique que cette applet de commande attend que le processus spécifié et ses descendants se terminent avant d’accepter plus d’entrée. Ce paramètre supprime l’invite de commandes ou conserve la fenêtre jusqu’à ce que les processus se terminent.

Type:SwitchParameter
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WhatIf

Montre ce qui se passe en cas d’exécution de l’applet de commande. L’applet de commande n’est pas exécutée.

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

Type:SwitchParameter
Alias:wi
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WindowStyle

Spécifie l’état de la fenêtre utilisée pour le nouveau processus. La valeur par défaut est Normal. Les valeurs valides pour ce paramètre sont :

  • Normal
  • Hidden
  • Minimized
  • Maximized

Vous ne pouvez pas utiliser les paramètres WindowStyle et NoNewWindow dans la même commande.

Le paramètre ne s’applique pas aux systèmes non-Windows. Lorsque vous utilisez des systèmes non Windows, vous n’obtenez jamais de nouvelle fenêtre.

Type:ProcessWindowStyle
Valeurs acceptées:Normal, Hidden, Minimized, Maximized
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

-WorkingDirectory

Spécifie l’emplacement dans lequel le nouveau processus doit commencer.

Quand elle n’est pas spécifiée, l’applet de commande est définie par défaut sur l’emplacement complet spécifié dans le paramètre FilePath . Si la valeur du paramètre FilePath n’est pas complète, elle correspond par défaut au répertoire de travail actuel du processus appelant.

Les caractères génériques ne sont pas pris en charge. Le chemin d’accès ne doit pas contenir de caractères qui seraient interprétés comme des caractères génériques.

Type:String
Position:Named
Valeur par défaut:None
Obligatoire:False
Accepter l'entrée de pipeline:False
Accepter les caractères génériques:False

Entrées

None

Vous ne pouvez pas diriger les objets vers cette applet de commande.

Sorties

None

Par défaut, cette applet de commande ne retourne aucune sortie.

Process

Lorsque vous utilisez le paramètre PassThru , cette applet de commande retourne un objet Process .

Notes

PowerShell inclut les alias suivants pour Start-Process:

  • Toutes les plateformes
    • saps
  • Windows
    • start

Les commandes natives sont des fichiers exécutables installés dans le système d’exploitation. Ces exécutables peuvent être exécutés à partir de n’importe quel interpréteur de commandes, comme PowerShell. En général, vous exécutez la commande exactement comme vous le feriez dans bash ou cmd.exe. L’applet Start-Process de commande peut être utilisée pour exécuter toutes les commandes natives, mais ne doit être utilisée que lorsque vous devez contrôler la façon dont la commande est exécutée.

Start-Process est utile pour exécuter des programmes GUI sur des plateformes non Windows. Par exemple, exécutez Start-Process gedit pour lancer l’éditeur de texte graphique commun aux environnements de bureau GNOME.

Par défaut, Start-Process lance un processus de façon asynchrone. Le contrôle est retourné instantanément à PowerShell même si le nouveau processus est toujours en cours d’exécution.

  • Sur le système local, le processus lancé vit indépendamment du processus d’appel.
  • Sur un système distant, le nouveau processus est arrêté lorsque la session distante se termine immédiatement après la Start-Process commande. Par conséquent, vous ne pouvez pas utiliser Start-Process dans une session distante s’attendant à ce que le processus lancé expire la session.

Si vous devez utiliser Start-Process dans une session distante, appelez-le avec le paramètre Wait . Vous pouvez également utiliser d’autres méthodes pour créer un processus sur le système distant.

Lorsque vous utilisez le paramètre Wait , Start-Process attend que l’arborescence de processus (le processus et tous ses descendants) se termine avant de retourner le contrôle. Cela est différent du comportement de l’applet Wait-Process de commande, qui attend uniquement que les processus spécifiés se terminent.

Sur Windows, le cas Start-Process d’usage le plus courant consiste à utiliser le paramètre Wait pour bloquer la progression jusqu’à ce que le nouveau processus se termine. Sur le système non-Windows, cela est rarement nécessaire, car le comportement par défaut pour les applications en ligne de commande est équivalent à Start-Process -Wait.

Cette applet de commande est implémentée à l’aide de la méthode Start de la classe System.Diagnostics.Process . Pour plus d’informations sur cette méthode, consultez Process.Start, méthode.