CSharp - 将PowerShell命令插入到 C#

  显示原文与译文双语对照的内容

我希望在 C# 项目中使用这里PowerShell命令:


Get-VM -Name Win8-Henry | Get-VMNetworkAdapter | Select MacAddress

这是我在 C# 中通常做的事情:


public static void MacAdd(string machineName,Runspace run) {
//Get-VM -Name Win8-Henry | Get-VMNetworkAdapter | Select MacAddress
 Command command = new Command("Get-VM");
 command.Parameters.Add("Name", machineName);

 using (Pipeline hostPipeline = run.CreatePipeline())
 {
 hostPipeline.Commands.Add(command);
 Collection<PSObject> echos = hostPipeline.Invoke();
 hostPipeline.Stop();
 }
}

我需要的帮助是添加第二个命令,然后使用管道。

时间: 作者:

使用 AddScript() 方法PowerShell 类上。


var Command = String.Format("Get-VM -Name {0} | Get-VMNetworkAdapter | Select MacAddress", computername);
var PowerShell = PowerShell.Create();
PowerShell.AddScript(Command);
PowerShell.Invoke();

作者:

也可以将其他命令添加到管道中:)


hostPipeline.Commands.Add(new Command("Get-VMNetworkAdapter"));

作者:

只要分享我在应用程序中需要执行的脚本时所做的事情。 然后,我可以轻松地替换参数( 例如 ,"$ $machineName$,并干净地得到结果。


Dim lxScript As XElement = <Script>
.{
Get-VM -Name $!$machineName$!$ | Get-VMNetworkAdapter | Select MacAddress
} 
 </Script>

...