Powershell을 사용하여 Ecxhange 2007에서 Windows 시스템 서비스를 사용하여 사서함을 만듭니다. 시스템 서비스로 실행 중일 때 (advapi32.dll을 사용하여) 가장을 사용하여 powershell 호출을 래핑하면 해당 교환 권한을 가진 사용자로 실행되지만 다음 오류 메시지가 표시됩니다.C#의 Powershell 및 Exchange 2007에서 가장을 사용할 때의 오류
다음 오류로 인해 Windows PowerShell 스냅인 Microsoft.Exchange.Management.PowerShell.Admin을로드 할 수 없습니다. 'Microsoft.Exchange.Data.Directory.Globals'의 형식 이니셜 라이저에서 예외가 발생했습니다.
이 문제를 설명하는 Microsoft KB 문서 (KB943937)가 있으며 Exchange SP1 RU1을 설치하는 것이 수정이지만 현재 SP3 RU1을 (를) 실행하고 있습니다. KB 기사에 지정된대로 -DomainController 매개 변수를 사용하고 있지만 여전히 동일한 오류가 발생합니다.
코드를 잘 못 사용하는 사용자로 서비스를 실행하면 코드에 문제가 있다고 생각하지 않습니다. 나는 Windows XP와 Server 2008에서 같은 문제로 이것을 실행 해 보았습니다.
powershell 코드 전에 System.Security.Principal.WindowsIdentity.GetCurrent().Name
을 호출하면 가장이 올바르게 작동하는지 알 수 있습니다.
이전에이 문제가 발생 했습니까?
이 대답을 읽으십시오. http://stackoverflow.com/questions/11806/how-do-you-impersonate-an-active-directory-user-in-powershell –
@Smallpygmy 좋은 생각을했습니다. 편집본을 답변으로 올리고 답변으로 표시 한 경우 좋을 것입니다. :-) – Matt