无法通过Powershell在域上使用SetPassword

时间:2014-10-15 14:24:21

标签: powershell active-directory directoryentry

我正在尝试在DirectoryEntry上使用SetPassword方法。

$Root = New-Object System.DirectoryServices.DirectoryEntry("LDAP://dc.ourdomain.com/OU=Users,DC=dc,DC=ourdomain,DC=com", $ldapusername, $ldappassword, "Secure")

$objUser = $Root.Create("user","CN=$DisplayName")
$objUser.Put("sAMAccountName", "$username")
$objUSer.Put("userPrincipalName","$userPrincipalName")
$objUser.Put("givenName", "$firstname")
$objUser.Put("sn", "$lastname")
$objUser.Put("description", "$description")
$objUser.Put("displayName", "$DisplayName")
$objUser.Put("mail", "$email")
$objUser.Put("company", "$Company")
$objUser.SetInfo()
$ObjUser.psbase.Invoke("SetPassword","qW12eR34")
$objUser.psbase.InvokeSet(“AccountDisabled”,$false)
$objUser.SetInfo()

每当我运行此命令时,我都会收到以下错误:

Exception calling "Invoke" with "2" argument(s): "The RPC server is unavailable. (
Exception from HRESULT: 0x800706BA)"
At E:\Untitled1.ps1:27 char:23 + $ObjUser.psbase.Invoke <<<< ("SetPassword","qW12eR34")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodTargetInvocation

我可以通过Set-ADAccountPassword重置密码就好了,但我需要能够通过这种方式来实现。这个函数创建用户就好了,它还将AccountDisable设置为false,因为它应该做。 但它一直在失败的SetPassword ..

我在这里读到有些人提到它可能是由于阻塞端口等(两个服务器之间一切都是开放的)有些人提到AuthenticationType必须设置为Secure ..但是我将它设置为Secure,并且我仍然遇到同样的问题。

提前致谢..

1 个答案:

答案 0 :(得分:0)

好的,所以我很确定我发现了为什么这样,我试图做同样的事情,并确认所有端口(这在端口135上工作)是开放的,但是端口135从来没有能够接收来自这个世界,称为我的ISP,是的,现在大多数ISP,并且有更多要关注WILL将阻止此端口上传入的所有流量,这就是您的错误告诉您的内容。 它正在尝试执行操作,但请求永远不会到达服务器。 打电话给您的提供商并确认,否则请检查您的传入服务器上的防火墙规则中的端口135(暂时禁用防火墙进行测试会告诉您)