Maison > développement back-end > C++ > Comment puis-je transmettre des arguments de ligne de commande aux scripts PowerShell à partir de C# ?

Comment puis-je transmettre des arguments de ligne de commande aux scripts PowerShell à partir de C# ?

Susan Sarandon
Libérer: 2025-01-23 22:57:10
original
483 Les gens l'ont consulté

How Can I Pass Command Line Arguments to PowerShell Scripts from C#?

Exécuter des scripts PowerShell à partir de C# à l'aide d'arguments de ligne de commande

L'intégration de la possibilité d'exécuter des scripts PowerShell dans les applications C# peut apporter de nombreux avantages. Cependant, pour profiter pleinement de cette fonctionnalité, il est important de comprendre comment transmettre les paramètres de ligne de commande aux scripts PowerShell en code C#. Ce guide explorera ce scénario courant et fournira une solution complète pour vous aider à réaliser une exécution transparente des scripts et des paramètres PowerShell.

Définition du problème

Pour exécuter un script PowerShell à partir de C#, vous pouvez utiliser le modèle de code suivant :

<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();

RunspaceInvoke scriptInvoker = new RunspaceInvoke(runspace);

Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(scriptFile);

results = pipeline.Invoke();</code>
Copier après la connexion

Dans ce code, scriptFile représente le chemin d'accès au script PowerShell (par exemple, "C:Program FilesMyProgramWhatever.ps1"). Si votre script utilise des arguments de ligne de commande au format « -key Value » (où Value peut contenir des espaces), vous pourriez avoir des difficultés à transmettre ces arguments efficacement.

Solution

Pour résoudre ce problème, vous devez créer un objet de commande distinct pour le fichier de script et spécifier les paramètres à l'aide de l'objet CommandParameter :

<code class="language-csharp">Command myCommand = new Command(scriptfile);
CommandParameter testParam = new CommandParameter("key", "value");
myCommand.Parameters.Add(testParam);
pipeline.Commands.Add(myCommand);</code>
Copier après la connexion

Cette méthode garantit une gestion correcte des arguments de ligne de commande, y compris les arguments contenant des espaces.

Exemple de code complet

Pour résumer, voici le code modifié complet contenant la solution :

<code class="language-csharp">RunspaceConfiguration runspaceConfiguration = RunspaceConfiguration.Create();

Runspace runspace = RunspaceFactory.CreateRunspace(runspaceConfiguration);
runspace.Open();

Pipeline pipeline = runspace.CreatePipeline();

// 使用参数构建单独的命令
Command myCommand = new Command(scriptfile);
CommandParameter testParam = new CommandParameter("key", "value");
myCommand.Parameters.Add(testParam);

pipeline.Commands.Add(myCommand);

results = pipeline.Invoke();</code>
Copier après la connexion

En intégrant cette solution dans votre code C#, vous pourrez exécuter en toute confiance des scripts PowerShell et transmettre des arguments de ligne de commande, même si les arguments contiennent des espaces. Cette fonctionnalité améliorée vous permettra d'intégrer de manière transparente des scripts PowerShell dans vos applications C#.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal