我试图通过本身执行PowerShell远程运行的Lync机器上的cmdlet一个WcfService配置我LyncServer发生。我成功导入了Lync模块,但是当我尝试调用Lync cmdlet时Get-CsUser我在powershell.Streams.Error中收到错误:PowerShell远程的Lync,Active Directory的错误“-2147016672”当检索域控制器
在域“my.test.domain”中搜索域控制时发生Active Directory错误“-2147016672” :“发生操作错误。
这是我如何创建我的运行空间:
PSCredential psCred = new PSCredential(this.Credentials.Domain + "\\" + this.Credentials.UserName, this.Credentials.SecurePassword);
WSManConnectionInfo wsman = new WSManConnectionInfo(uri, c_powerShellShema, psCred);
wsman.AuthenticationMechanism = AuthenticationMechanism.Default;
//wsman.AuthenticationMechanism = AuthenticationMechanism.Kerberos;
//wsman.ProxyAuthentication = AuthenticationMechanism.Negotiate;
Runspace retval = RunspaceFactory.CreateRunspace();//wsman);
retval.Open();
和我的PowerShell呼吁
PowerShell powerShell = PowerShell.Create();
powerShell.Runspace = this.Runspace;
powerShell.AddScript("Import-Module Lync");
powerShell.Invoke();
powerShell.Streams.ClearStreams();
powerShell.AddScript("Get-CsUser);
powerShell.Commands.AddCommand("Out-String");
var retval = powerShell.Invoke();
foreach (var o in retval)
Console.WriteLine(o.ToString());
foreach (var e in powerShell.Streams.Error)
Console.WriteLine(e.ToString());
任何想法?即在运行空间使用的用户是我以前通过的Lync管理控制台来完成所有的Lync配置相同的用户,所以他有他需要的所有访问权限。
这样,才能得到正确的理解:我的WCF服务的应用程序池是一个AD帐户,我创建了PowerShell的运行空间为AD用户为好,但脚本PowerShell命令被援引作为一个完全不同的用户,可能在AD上没有特权的人。所以在我调用任何cmdlet之前,我必须运行一个impersonate cmdlet(或其他),以便上下文正确。我对么? – esskar 2011-05-29 10:45:07