0

Windows 認証を使用して ASP.NET C# で MVC イントラネット アプリケーションを作成しています。ユーザーの資格情報を使用して外部 PowerShell スクリプトを実行する必要があります。

web.config ファイルに追加します。

<system.web>
    <authentication mode="Windows" />
    <identity impersonate="true"/>
</system.web>
<runtime>
    <!--http://blogs.msdn.com/b/powershell/archive/2007/09/10/impersonation-and-hosting-powershell.aspx-->
    <legacyImpersonationPolicy enabled="false"/>
    <alwaysFlowImpersonationPolicy enabled="true"/>
</runtime>

私のコントローラーで

        // http://support.microsoft.com/kb/306158
        System.Security.Principal.WindowsImpersonationContext impersonationContext;
        impersonationContext = ((System.Security.Principal.WindowsIdentity)User.Identity).Impersonate();

        ViewBag.Message = "User Powershell : " + PSRunner.ExecuteScript("Whoami;") + "   > user C# : " + System.Security.Principal.WindowsIdentity.GetCurrent().Name + "    User Authentifier : " + User.Identity.Name + " type " + User.Identity.GetType();

        impersonationContext.Undo();

しかし、私は常にpowershellにIISユーザーを持っています

User Powershell : iis apppool\www.site.com > user C# : DOMAIN\alopez User Authentifier : DOMAIN\alopez type System.Security.Principal.WindowsIdentity
4

1 に答える 1

1

PSRunner が powershell ランタイムをどのように初期化するかはわかりませんが、次を使用して他のユーザーとして powershell プロセスを開始するのはどうですか: Runas

于 2013-03-30T21:08:27.747 に答える