Start-Process
Démarre un ou plusieurs processus sur l'ordinateur local.
Syntax
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-Credential <PSCredential>]
[-WorkingDirectory <String>]
[-LoadUserProfile]
[-NoNewWindow]
[-PassThru]
[-RedirectStandardError <String>]
[-RedirectStandardInput <String>]
[-RedirectStandardOutput <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-UseNewEnvironment]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Start-Process
[-FilePath] <String>
[[-ArgumentList] <String[]>]
[-WorkingDirectory <String>]
[-PassThru]
[-Verb <String>]
[-WindowStyle <ProcessWindowStyle>]
[-Wait]
[-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, comme l’applet Invoke-Item
de commande.
Vous pouvez utiliser les paramètres de pour spécifier des Start-Process
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, y compris 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 de tri des éléments dans un nouveau fichier
Cet exemple démarre un processus qui trie les éléments du 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 platetage 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 différents verbes pour démarrer un processus
Cet exemple montre comment trouver 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 indique que vous pouvez utiliser les verbes Open et RunAs
avec powershell.exe
, ou avec n’importe quel processus qui exécute un .exe
fichier.
Exemple 7 : spécification d’arguments pour le processus
Les deux commandes démarrent l’interpréteur de commandes Windows et émettent 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 d’échappement.
Notez que la première commande spécifie une chaîne comme 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 : Create 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 autres que Windows, le processus nouvellement démarré est attaché à l’interpréteur de commandes qui a été 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 un instance en arrière-plan de PowerShell sur Linux qui reste actif même après la fermeture de 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.
Paramètres
-ArgumentList
Spécifie les paramètres ou les valeurs de paramètre à utiliser lorsque cette applet de commande démarre le processus. Les arguments peuvent être acceptés comme une chaîne unique avec les arguments séparés par des espaces, ou comme un tableau de chaînes séparées par des virgules. L’applet de commande joint le tableau en une chaîne unique 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 placés dans une séquence d’échappement. Pour plus d’informations, consultez about_Quoting_Rules.
Pour obtenir de meilleurs résultats, utilisez une seule valeur ArgumentList contenant tous les arguments et tous les guillemets nécessaires.
Type: | String[] |
Aliases: | Args |
Position: | 1 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Confirm
Vous demande une confirmation avant d’exécuter l’applet de commande.
Type: | SwitchParameter |
Aliases: | cf |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 de Get-Credential
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.
Notes
Pour plus d’informations sur la protection des données SecureString , consultez Comment SecureString est-il sécurisé ?.
Type: | PSCredential |
Aliases: | RunAs |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 .txt
fichier ou .doc
, 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 |
Aliases: | PSPath, Path |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Aliases: | Lup |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Aliases: | nnw |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Aliases: | RSE |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RedirectStandardInput
Spécifie un fichier. Cette applet de commande lit l’entrée du fichier spécifié. Entrez le chemin d’accès et le nom du fichier d’entrée. Par défaut, le processus obtient son entrée à partir du clavier.
Type: | String |
Aliases: | RSI |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Aliases: | RSO |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 à contenir uniquement les variables d’environnement par défaut définies pour l’étendue Machine . Cela a pour effet secondaire que le $env:USERNAME
est défini sur SYSTEM. Aucune des variables de l’étendue Utilisateur n’est incluse.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 , Open , Print , RunAs , RunAsUser |
.exe | Open , RunAs , RunAsUser |
.txt | Open , Print , PrintTo |
.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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Wait
Indique que cette applet de commande attend que le processus spécifié et ses descendants se terminent avant d’accepter d’autres entrées. Ce paramètre supprime l’invite de commandes ou conserve la fenêtre jusqu’à la fin des processus.
Type: | SwitchParameter |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 |
Aliases: | wi |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | 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 sur des systèmes non Windows, vous n’obtenez jamais de nouvelle fenêtre.
Type: | ProcessWindowStyle |
Accepted values: | Normal, Hidden, Minimized, Maximized |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-WorkingDirectory
Spécifie l’emplacement dans lequel le nouveau processus doit démarrer.
Lorsqu’elle n’est pas spécifiée, l’applet de commande utilise par défaut l’emplacement complet spécifié dans le paramètre FilePath . Si la valeur du paramètre FilePath n’est pas complète, il utilise par défaut le 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 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
Entrées
None
Vous ne pouvez pas diriger d’objets vers cette applet de commande.
Sorties
None
Par défaut, cette applet de commande ne retourne aucune sortie.
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 des commandes natives, mais ne doit être utilisée que lorsque vous devez contrôler l’exécution de la commande.
Start-Process
est utile pour exécuter des programmes d’interface utilisateur graphique sur des plateformes non Windows. Par exemple, exécutez Start-Proces gedit
pour lancer l’éditeur de texte graphique commun aux environnements de bureau GNOME.
Par défaut, Start-Process
lance un processus de manière asynchrone. Le contrôle est instantanément retourné à 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é à la fin de la session distante, immédiatement après la
Start-Process
commande . Par conséquent, vous ne pouvez pas utiliserStart-Process
dans une session distante en attendant que le processus lancé survive à la session.
Si vous devez l’utiliser Start-Process
dans une session distante, appelez-la 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 du processus (le processus et tous ses descendants) se ferme avant de retourner le contrôle. Cela est différent du comportement de l’applet Wait-Process
de commande, qui n’attend que la fin des processus spécifiés.
Sur Windows, le cas d’usage le plus courant consiste à utiliser le paramètre Wait pour Start-Process
bloquer la progression jusqu’à ce que le nouveau processus se termine. Sur un système autre que Windows, cela est rarement nécessaire, car le comportement par défaut des applications de 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 Méthode Process.Start.