2010-04-16 2 views
5

PowerShell 스크립트를 실행하기 위해 ASP.NET MVC 웹 응용 프로그램을 개발했습니다.ASP.NET PowerShell 가장 :

VS 웹 서버를 사용하고 있으며 스크립트를 잘 실행할 수 있습니다.

그러나 사용자는 자신의 사용자 계정이 허용하지 않는 작업을 수행하기 위해 AD에 대해 스크립트를 실행할 수 있어야합니다.

따라서

내가 파워 쉘 실행 영역 만들기 전에 신원을 전환하는 가장을 사용하고 있습니다 : 나는 도메인 관리자 계정을 사용하여 테스트 한

  Runspace runspace = RunspaceFactory.CreateRunspace(config); 

     var currentuser = WindowsIdentity.GetCurrent().Name; 

     if (runspace.RunspaceStateInfo.State == RunspaceState.BeforeOpen) { 
      runspace.Open(); 
     } 

및 runspace.Open()를 호출 할 때 나는 다음과 같은 예외를 얻을 :

보안 예외 설명 : 응용 프로그램이 보안 정책에서 허용하지 않는 작업을 수행하려고 시도했습니다. 이 응용 프로그램에 필요한 사용 권한을 부여하려면 시스템 관리자에게 문의하거나 구성 파일에서 응용 프로그램의 신뢰 수준을 변경하십시오. 예외 정보 : System.Security.SecurityException : 요청 된 레지스트리 액세스가 허용되지 않습니다.

웹 응용 프로그램이 완전히 신뢰되어 실행 중이며 컴퓨터의 로컬 관리자 그룹에 가장을 사용하고있는 계정을 명시 적으로 추가했습니다 (도메인 관리자 그룹이 이미 있더라도).

나는이 게시물 (http://blogs.msdn.com/webdav_101/archive/2008/09/25/howto-calling-exchange-powershell-from-an-impersonated-thead.aspx)

이 같은 평가 어떤 도움도 유사한 방법으로 가장을 수행 할 advapi32.dll의로 LogonUser 전화를 사용하고 순간에 쇼 스토퍼의 비트입니다.

감사 벤

답변

3

이 블로그 게시물의 도움을합니까? PowerShell 개발자로부터 직접 제공됩니다. 기본적으로 PowerShell은 파이프 라인을 실행하기 위해 새 스레드를 시작하고 .NET2.0에서는 스레드가 호출 스레드의 가장을 사용하도록 허용하지 않으므로 실패합니다.

http://blogs.msdn.com/powershell/archive/2007/09/10/impersonation-and-hosting-powershell.aspx

+0

하이 제임스, 나는 경우 원래이 게시물에 건너 않았고, 나를 위해 작동하지 않았다. 그러나 오늘 다른 컴퓨터에서 시도한 후 aspnet.config 파일을 변경 한 후 다시 부팅했는지 확인하는 것이 중요합니다. 다른 사용자를 성공적으로 가장 할 수있었습니다. 감사 –