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.
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>
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.
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>
Cette méthode garantit une gestion correcte des arguments de ligne de commande, y compris les arguments contenant des espaces.
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>
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!