来自C#Web应用程序的Powershell WebAdministration

时间:2013-09-01 22:10:25

标签: c# wcf powershell impersonation

我有一些问题让Web管理模块从我创建的c#webservice执行命令。

 InitialSessionState init = InitialSessionState.CreateDefault();
    init.ImportPSModule(new[] { "WebAdministration" });
    Runspace r = RunspaceFactory.CreateRunspace(init);
    r.Open();
    System.Management.Automation.RunspaceInvoke invoker = new System.Management.Automation.RunspaceInvoke(r); 
    List<System.Management.Automation.PSObject> result  = invoker.Invoke("get-website").ToList();

此操作失败并显示以下错误拒绝访问。 (HRESULT异常:0x80070005(E_ACCESSDENIED))

如果我用get-module替换get-website,它会返回1个结果 - WebAdministration按预期,但不管它不会让我访问它。 我尝试使用impersonateValidUser以管理员身份启动VS,使用浏览器作为管理员。 我也尝试在wcf中使用以下代码

WindowsIdentity wi = new WindowsIdentity("administrator@domain.");
    WindowsImpersonationContext ctx = null;
    try
    {
        ctx = wi.Impersonate();
        List<System.Management.Automation.PSObject> result = invoker.Invoke("get-website").ToList();
 }

但是也失败了,拒绝访问。

以管理员身份运行时,所有这些测试都可以在powershell中正常运行。 任何建议

0 个答案:

没有答案