이 PowerShell 명령을 사용하여 Exchange Online의 Distributon 그룹에 구성원을 추가 할 수 있습니다. 이것은 PS에서 올바르게 작동합니다. 하지만 C# 응용 프로그램에서이 작업을 수행해야합니다.C# Powershell 파이프 라인 foreach-object
$arr | foreach-object{Add-DistributionGroupMember -Identity 'Test' -Member $_}
구성원을 포함하는 배열을 PS의 $ arr에 전달하고 foreach-object로 파이프해야합니다. 나는 많은 검색을 해왔지만 모든 예제는 단일 명령을 수행하는 방법 만 보여줍니다. 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을이 작업을 수행 할 수 없습니다. 또한 runspace가 첫 번째 파이프 라인 만 실행하기 때문에 아래와 같은 작업을 수행 할 수 없습니다.
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();
}
그냥 System.DirectoryServices의 DirectoryEntry가 아닌 C#에서 PowerShell을 호출하는 이유는 무엇입니까? – JPBlanc
PowerShell없이 Exchange Online에서 메일 그룹을 어떻게 만듭니 까? 유일한 다른 API는 관리 유형 작업을 수행 할 수있는 기능이없는 EWS Managed API입니다. – preambleMe
Active Directory에서 Active Directory를 만들면 Microsoft Online Services 디렉터리 동기화 도구는 로컬 Active Directory 디렉터리 서비스에서 Microsoft Online Services 로의 단방향 동기화를 제공합니다. – JPBlanc