Heim > Backend-Entwicklung > C++ > Wie kann ich Befehlszeilenargumente von C# an PowerShell-Skripte übergeben?

Wie kann ich Befehlszeilenargumente von C# an PowerShell-Skripte übergeben?

Susan Sarandon
Freigeben: 2025-01-23 22:57:10
Original
483 Leute haben es durchsucht

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

PowerShell-Skripts aus C# mit Befehlszeilenargumenten ausführen

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.

Problemdefinition

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>
Nach dem Login kopieren

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.

Lösung

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>
Nach dem Login kopieren

Diese Methode gewährleistet die korrekte Verarbeitung von Befehlszeilenargumenten, einschließlich Argumenten, die Leerzeichen enthalten.

Vollständiges Codebeispiel

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage