2011-05-27 26 views
2

我试图通过本身执行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配置相同的用户,所以他有他需要的所有访问权限。

回答

0

您没有使用ASP.NET但也许How to use the System.DirectoryServices namespace in ASP.NET可以解释你的问题。

你当然知道,但是当你得到像-2147016672这样的错误时,请将它转换为hexa(0x80072020)和Google Micosoft thechnologie名称以及Hexa代码“Active-Directory 0x80072020”以获得有关该问题的联机帮助。

+0

这样,才能得到正确的理解:我的WCF服务的应用程序池是一个AD帐户,我创建了PowerShell的运行空间为AD用户为好,但脚本PowerShell命令被援引作为一个完全不同的用户,可能在AD上没有特权的人。所以在我调用任何cmdlet之前,我必须运行一个impersonate cmdlet(或其他),以便上下文正确。我对么? – esskar 2011-05-29 10:45:07

相关问题