2013-10-16 3 views
0

내 C# 코드에서 Powershell Remoting (v2)을 사용하여 Exchange cmdlet을 설치하지 않은 원격 컴퓨터에서 원격 Powershell Cmdlet (Exchange 2010의 cmdlet 중 하나)을 실행하려고합니다. 이는 RemoteException을 반환C#에서 원격 cmdlet 호출 Runspace

var connection = new WSManConnectionInfo("http://my.exchange.srv/PowerShell", "http://schemas.microsoft.com/powershell/Microsoft.Exchange", credentials); 
var runspace = RunspaceFactory.CreateRunspace(connection); 
var ps = PowerShell.Create(); 
ps.Runspace = runspace; 
runspace.Open(); 
var results = ps.AddCommand("Enable-MailPublicFolder").AddArgument(folderId).Invoke(); 

: 용어 '사용-MailPublicFolder가 인식되지 않습니다'오류 나는 이런 식으로 뭔가가있다. 로컬 컴퓨터가 Exchange Cmdlet에 익숙하지 않기 때문입니다.

그러나 Exchange 모듈을 내 runspace로 가져 오는 방법을 알지 못합니다. 다양한 솔루션을 찾았지만 모두 부분적입니다. 일부에서는 RunspaceConfiguration을 사용하여 Exchange 2010 스냅인을 추가하라고 지시하지만 RunspaceFactory.CreateRunspace에 대한 과부하는 RunspaceConfiguration을 허용하며 WSManConnectionInfo을 원격 호스트에 연결하도록 허용합니다. 또 다른 해결책은 AddCommand 대신 AddScript을 호출하는 것입니다. 예외는 발생하지 않는 것으로 보이지만 그 이유를 알지 못하면 아무 것도하지 않는 것 같습니다. 오히려 무작위 문자열을 전달하는 것보다 (AddCommand를 사용하여) 상대적으로 강력한 형식으로 작업하는 것이 좋습니다.

로컬 컴퓨터에 모듈을 설치하지 않는 다른 방법이 있습니까? 또는 Exchange 2010 cmdlet를 로컬에 설치하려면 어떻게해야합니까?

+0

URi와 어떤 관계가 있습니까? –

+0

'https : // my.exchange.server/Powershell'이며 ShellUri로 "http://schemas.microsoft.com/powershell/Microsoft.Exchange"를 전달합니다. Exchange에서 Exchange cmdlet을 노출하는 다른 끝점을 노출합니까? –

답변

1

일반적으로 원격 연결에 사용중인 계정이 Exchange에서 필요한 RBAC 역할 그룹의 구성원이 아니라는 오류가 표시됩니다.

원격 세션이 초기화되면 서버는 연결을 만드는 계정의 역할을 확인하고 해당 역할 구성원 집합에 대해 사용자 지정된 세션에 프록시 기능 집합을 만듭니다. 계정이 공용 폴더를 관리하는 역할 그룹에 속하지 않으면 세션에서 사용할 수있는 공용 폴더 관리 cmdlet에 대한 프록시 기능을 사용할 수 없습니다.

+0

실제로, 이것은 그 것이었다! 보안 관련 오류가 발생하지 않았거나 기록되지 않았기 때문에 공용 폴더 관리 그룹에 사용자를 추가하기 만하면됩니다. 감사! –