我有此PowerShell命令將成員添加到Exchange Online中的Distributon組。這在PS中正確工作。但我需要從C#應用程序中完成此操作。C#Powershell管道foreach-object
$arr | foreach-object{Add-DistributionGroupMember -Identity 'Test' -Member $_}
我需要將包含成員的數組傳遞給PS中的$ arr並將其傳遞給foreach對象。我做了很多搜索,但所有的例子都只顯示瞭如何做單個命令。如何在C#中的PS命令?
代碼片段:
using (Runspace runspace = RunspaceFactory.CreateRunspace(connectionInfo))
{
runspace.Open();
using (PowerShell ps = PowerShell.Create())
{
ps.Runspace = runspace;
string[] members = new string[] { "[email protected]",
"[email protected]",
};
ps.Commands.AddParameter("Members").AddArgument(members); // ??
ps.Commands.AddCommand("foreach-object"); // I'm stuck at this point
Collection<PSObject> results = ps.Invoke();
}
}
注:遠程腳本被阻擋在我們的PS我無法通過做到這一點AddScript。由於運行空間僅執行第一個管道,因此下面的操作不起作用。
foreach(string mem in members)
{
Command command = new Command("Add-DistributionGroupMember");
command.Parameters.Add("Identity", "test");
command.Parameters.Add("Member", member);
Pipeline pipeline = runspace.CreatePipeline();
pipeline.Commands.Add(command);
pipeline.Invoke();
}
只是一個問題,你爲什麼要在C#中調用PowerShell,而不僅僅是DirectoryEntry(在System.DirectoryServices中)? – JPBlanc
如何在沒有PowerShell的Exchange Online中創建通訊組?唯一的其他API是EWS託管API,它沒有任何功能來執行管理類型任務。 – preambleMe
在Active-Directory中創建它們,則Microsoft Online Services目錄同步工具提供從本地Active Directory目錄服務到Microsoft Online Services的單向同步。 – JPBlanc