2014-01-15 2 views
1

Я хочу использовать эту команду PowerShell в C# проекта:Вставка команды PowerShell в C#

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

hostPipeline.Commands.Add (anotherCommand), а затем Invoke()? – NValchev

ответ

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(); 
0

Просто добавьте другие команды к трубопроводу тоже :)

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

Просто поделиться тем, что я делаю, когда у меня есть сценарий, который мне нужно выполнить в приложении. Затем я могу заменить параметры (т.е. "$! $ Имя_компьютера $! $" Легко и получить результат чисто.

Dim lxScript As XElement = <Script> 
.{ 
Get-VM -Name $!$machineName$!$ | Get-VMNetworkAdapter | Select MacAddress 
}       
        </Script> 
Смежные вопросы