Heim >Backend-Entwicklung >C++ >Wie kann ich Befehlszeilenargumente von C# an PowerShell-Skripte übergeben?
Die Integration der Möglichkeit, PowerShell-Skripte in C#-Anwendungen auszuführen, kann viele Vorteile bringen. Um diese Funktion jedoch optimal nutzen zu können, ist es wichtig zu verstehen, wie Befehlszeilenparameter in C#-Code an PowerShell-Skripte übergeben werden. In diesem Leitfaden wird dieses häufige Szenario untersucht und eine umfassende Lösung bereitgestellt, die Ihnen dabei hilft, eine nahtlose Ausführung von PowerShell-Skripts und -Parametern zu erreichen.
Um ein PowerShell-Skript aus C# auszuführen, können Sie die folgende Codevorlage verwenden:
<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>
In diesem Code stellt scriptFile
den Pfad zum PowerShell-Skript dar (z. B. „C:Program FilesMyProgramWhatever.ps1“). Wenn Ihr Skript Befehlszeilenargumente im Format „-key Value“ verwendet (wobei Value Leerzeichen enthalten kann), können Sie Schwierigkeiten haben, diese Argumente effektiv zu übergeben.
Um dieses Problem zu lösen, müssen Sie ein separates Befehlsobjekt für die Skriptdatei erstellen und die Parameter mithilfe des CommandParameter
-Objekts angeben:
<code class="language-csharp">Command myCommand = new Command(scriptfile); CommandParameter testParam = new CommandParameter("key", "value"); myCommand.Parameters.Add(testParam); pipeline.Commands.Add(myCommand);</code>
Diese Methode gewährleistet die korrekte Verarbeitung von Befehlszeilenargumenten, einschließlich Argumenten, die Leerzeichen enthalten.
Zusammenfassend ist hier der vollständige geänderte Code, der die Lösung enthält:
<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>
Durch die Integration dieser Lösung in Ihren C#-Code können Sie PowerShell-Skripte sicher ausführen und Befehlszeilenargumente übergeben, selbst wenn die Argumente Leerzeichen enthalten. Mit dieser erweiterten Funktionalität können Sie PowerShell-Skripte nahtlos in Ihre C#-Anwendungen integrieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Befehlszeilenargumente von C# an PowerShell-Skripte übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!