我在让 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 中正常工作。有什么建议么