我有一些问题让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中正常运行。 任何建议