Démarrage des processus avec Windows PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. La cmdlet Start-Process dans PowerShell
  2. Les paramètres de la cmdlet Start-Process
  3. Les avantages de PowerShell Start-Process
Démarrage des processus avec Windows PowerShell

la cmdlet Start-Process est une commande PowerShell utilisée pour démarrer un ou plusieurs processus de manière contrôlée et gérée. Par défaut, le processus démarré hérite de tous les environnements PowerShell actuels.

la cmdlet Start-Process peut exécuter ou exécuter un fichier exécutable, un script batch, une commande MS-DOS et PowerShell, voire une application Java. De plus, Windows PowerShell peut utiliser la cmdlet Start-Process pour spécifier le profil utilisateur, l’état de Windows, les informations d’identification, etc.

Cet article explique comment fonctionne la cmdlet Start-Process et l’utilise lors de l’écriture de nos scripts.

La cmdlet Start-Process dans PowerShell

la cmdlet Start-Process exécute un ou plusieurs processus, fichiers exécutables ou de script, ou tout fichier qu’un logiciel installé peut ouvrir sur l’ordinateur.

la cmdlet Start-Process a une syntaxe de base illustrée ci-dessous lors de l’utilisation de Windows PowerShell.

Start-Process <string>

Les paramètres de la cmdlet Start-Process

la cmdlet Start-Process peut utiliser des paramètres pour ajouter plus de puissance, de fonctionnalité et de flexibilité à la cmdlet.

Démarrer un nouveau processus ou exécutable

Comme mentionné, l’utilisation la plus basique de la commande Start-Process est de fournir le fichier exécutable, le fichier batch ou script, ou la commande comme la syntaxe ci-dessous. Par exemple, une application Bloc-notes s’ouvrira lorsqu’elle sera appelée avec la syntaxe suivante.

Start-Process notepad.exe

Alternativement, la cmdlet peut utiliser le paramètre -FilePath pour spécifier l’emplacement du fichier que nous voulons exécuter.

Start-Process -FilePath notepad.exe

Nous pouvons également spécifier le chemin complet du fichier exécutable ou du fichier batch ci-dessous. Dans l’exemple suivant, nous allons exécuter un fichier batch situé sous le répertoire D:\scripts dans l’exemple suivant.

Start-Process -FilePath "D:\scripts\backup.bat"

Définir l’entrée standard comme fichier

Nous pouvons spécifier une entrée de processus avec l’entrée standard où le contenu d’entrée standard fourni est redirigé vers le processus donné. Dans ce cas, le paramètre -RedirectStandardInput peut définir un fichier comme entrée dans le processus nouvellement créé.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardInput test.txt

Dans l’exemple de syntaxe ci-dessus, l’entrée exécutable backup.bat provient du fichier test.txt.

Définir la sortie standard comme fichier

Lorsqu’un processus est exécuté, il peut créer une sortie que nous pouvons imprimer sur le terminal, l’écran ou le fichier. Nous pouvons utiliser le paramètre -RedirectStandardOuput pour spécifier la sortie dans un fichier.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardOutput test.txt

La sortie exécutable backup.bat provient du fichier test.txt dans l’exemple de syntaxe ci-dessus.

Définir la sortie d’erreur standard en tant que fichier

Lors de l’exécution d’un processus, des erreurs peuvent se produire et les informations sur ces erreurs sont imprimées dans la console ou le terminal par défaut. L’utilisation du paramètre -RedirectStandardError peut rediriger la sortie dans un fichier comme ci-dessous.

Start-Process -FilePath "D:\scripts\backup.bat" -RedirectStandardError errors.txt

Dans l’exemple de syntaxe ci-dessus, si nous avons rencontré des erreurs lors de l’exécution de l’exécutable backup.bat, les erreurs seront imprimées dans le fichier errors.txt.

Définir le répertoire de travail

Par défaut, le nouveau processus est exécuté dans le répertoire de travail actuel, qui est généralement le lecteur système C:. Cependant, nous pouvons définir un nouveau répertoire de travail ci-dessous en utilisant le paramètre -WorkingDirectory.

Start-Process notepad.exe -WorkingDirectory "D:\"

Pour cet exemple,

Créer un nouvel environnement

Avec nos paramètres précédents discutés dans l’article, nous pouvons les fusionner en un seul bloc de script.

Le paramètre -UseNewEnvironment précise que le processus s’exécute avec ses variables d’environnement.

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

Start-Process dans la fenêtre maximisée

La commande Start-Process peut démarrer un processus de ligne de commande ou un processus GUI qui peut avoir une interface graphique.

Le script peut définir la taille de la fenêtre de l’interface graphique avec le paramètre -WindowStyle. Ce paramètre peut être défini sur Agrandi pour agrandir la nouvelle fenêtre de processus.

Start-Process notepad.exe -WindowStyle Maximized

Start-Process avec un autre utilisateur

Par défaut, le processus démarré est exécuté avec les privilèges de l’utilisateur actuel. Cependant, la cmdlet Start-Process peut modifier les privilèges du processus avec le paramètre -Credential en fournissant le nouvel utilisateur avec lequel nous voulons exécuter le processus.

Si vous saisissez votre nom d’utilisateur, vous serez invité à saisir un mot de passe.

Start-Process notepad.exe -Credential <username>

Start-Process en tant qu’administrateur

On peut lancer l’application en tant qu’administrateur avec le paramètre - Verb.

Start-Process notepad.exe -Verb RunAs

Remarque : PowerShell peut toujours avoir besoin de votre confirmation en raison du contrôle de compte d’utilisateur (UAC) de votre ordinateur local malgré l’exécution en tant qu’administrateur. Nous ne recommandons pas de désactiver entièrement l’UAC pour des raisons de sécurité.

Start-Process avec des arguments spécifiés

Les commandes, les processus ou les fichiers de commandes peuvent accepter un ou plusieurs arguments pour obtenir des données d’entrée.

Ces données d’entrée sont appelées un argument, et la commande Start-Process peut fournir des arguments au processus démarré avec la -ArgumentList. Liste d’arguments fournie transmise aux processus en tant qu’arguments.

Start-Process -FilePath "$env:comspec" -ArgumentList "/c","dir","`"%systemdrive%\program files`""

Les avantages de PowerShell Start-Process

  • Les fichiers de script ne peuvent être ouverts que localement. Il s’agit d’une technique de sécurité qui empêche les attaques à distance à l’aide de scripts Windows PowerShell.
  • La cmdlet s’exécute dans un environnement de script pris en charge par Microsoft. Tant que Windows PowerShell est pris en charge, Microsoft consacrera des ressources pour maintenir le langage à jour, avec des révisions de mise à jour.
  • Une vaste communauté de développeurs partage facilement ses connaissances spécifiquement avec la cmdlet Start-Process.
  • Les cmdlets et les magasins de données système utilisent une syntaxe et des conventions de dénomination standard et cohérentes pour partager facilement les données.
  • Grâce à cette cmdlet, la navigation dans le système d’exploitation est simplifiée, ce qui permet aux utilisateurs de se familiariser avec le système de fichiers, le registre et d’autres données.
  • Les objets peuvent être facilement manipulés directement ou envoyés à d’autres outils ou bases de données.
  • Les éditeurs de logiciels et les développeurs peuvent créer des outils personnalisés.
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn