Partager via


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, un fichier de script ou un fichier qui peut s'ouvrir à 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 de Invoke-Item 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.exeou 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 la page de man pour nohup.

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, 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 aucun résultat.

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 de fichier 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 démarre uniquement avec les variables d’environnement par défaut définies pour l’étendue de l’ordinateur . Cela a l’effet latéral que est défini sur $env:USERNAMESYSTEM. 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 Ouvrir, Lire

Pour trouver 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. Les valeurs acceptables pour ce paramètre sont : Normal, Masqué, Réduit et Agrandi. La valeur par défaut est Normal.

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. La valeur par défaut est l’emplacement du fichier exécutable ou du document en cours de démarrage. Les caractères génériques ne sont pas pris en charge. Le nom du 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'entrée vers cette applet de commande.

Sorties

None, System.Diagnostics.Process

Cette applet de commande génère un objet System.Diagnostics.Process , si vous spécifiez le paramètre PassThru . Sinon, cette applet de commande ne retourne aucune sortie.

Notes

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 utiliser Start-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.