我想在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();
}
}
我需要帮助的是添加第二个命令,然后使用管道。
答案 0 :(得分:2)
使用AddScript()
method上的PowerShell
class。
var Command = String.Format("Get-VM -Name {0} | Get-VMNetworkAdapter | Select MacAddress", computername);
var PowerShell = PowerShell.Create();
PowerShell.AddScript(Command);
PowerShell.Invoke();
答案 1 :(得分:0)
只需将其他命令添加到管道中:)
hostPipeline.Commands.Add(new Command("Get-VMNetworkAdapter"));
答案 2 :(得分:0)
当我有一个我需要在应用程序中执行的脚本时,分享我的工作。然后我可以轻松地替换参数(即“$!$ machineName $!$”)并干净利落地获得结果。
Dim lxScript As XElement = <Script>
.{
Get-VM -Name $!$machineName$!$ | Get-VMNetworkAdapter | Select MacAddress
}
</Script>