PowerShell远程处理Lync,搜索域控制器时出现Active Directory错误“-2147016672”

时间:2011-05-27 15:35:47

标签: c# powershell active-directory remoting lync

我正在尝试通过WcfService配置我的LyncServer,WcfService本身执行PowerShell远程处理以在Lync机器上运行Cmdlet。我成功导入Lync模块,但是当我尝试调用Lync cmdlet时,例如Get-CsUser我在powershell.Streams.Error中收到错误:

搜索域控件时出现

Active Directory错误“-2147016672” 域“my.test.domain”中的lers:“发生了操作错误。”

这就是我创建Runspace的方式:

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());

有什么想法吗?在Runspace中使用的用户与我过去通过lync管理控制台进行所有lync配置的用户相同,因此他拥有所需的所有访问权限。

3 个答案:

答案 0 :(得分:1)

我终于找到了答案:Powershell v2 remoting and delegation。所以我在服务器上调用Enable-PsRemoting,我工作正常。

答案 1 :(得分:1)

您正在使用默认身份验证

filter ExpandProperty {
    $obj = $_
    $obj | get-member -MemberType *property | foreach {
        #Find objects with array value
        if( @($obj.($_.Name)).Count -gt 1 ) {
            $count = 1
            $prop = $_.Name
            $obj.($prop) | foreach {
                #Foreach value in the property
                $obj | Add-Member NoteProperty -Name "$prop (Property $($count))" -Value $_
                $count++
            }
        }
    }
    #Output object
    $obj
}

$taglib | ExpandProperty

任何用于商务命令的lync / skype(例如Get-CsUser或Enable-CsUser或Disable-CsUser)都会从您的服务器连接域控制器。

因此,在连接到DC时,呼叫不会指定用户要使用的凭据,因为您提供的凭据仅用于目标(Skype服务器)而不是DC。

因此,只要涉及多个跃点,就必须使用CredSSP,因为CredSSP会告诉您在连接到下一跃点时使用相同的凭据。

您可以参考这篇文章,它比我可能会讲的更好。:p

https://sysnetdevops.com/2016/09/16/skype-for-business-server-and-powershell-remoting/

答案 2 :(得分:0)

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

你当然知道,但是当你遇到像-2147016672这样的错误时,请将其转换为hexa(0x80072020)并使用Micosoft技术名称和Hexa代码“Active-Directory 0x 80072020”获取有关该问题的在线帮助。< / p>