我正在尝试通过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配置的用户相同,因此他拥有所需的所有访问权限。
答案 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>