0

我在让 Web 管理模块从我创建的 ac# 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 中正常工作。有什么建议么

4

0 回答 0