运行 在另一台机器上时出现 Powershell 错误

Powershell Error when run on a different machine

我写了一个脚本来获取一个 AD 用户,禁用该用户,从组成员中删除该用户并将该用户移动到一个 OU。我最初是在我们的 Windows 2008 R2 DC 上写的(我知道,这是个坏主意),我想 运行 在我的 Win 7 SP1 机器上本地编写脚本。它安装了 AD 角色,如本文所述 (http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory-module-in-powershell-in-windows-7.aspx)

我 运行 在 DC 和我的 Win7 机器 $PSVersionTable 上,它们完全相同。我可以 运行 ADSIEDIT.msc 在 Win 7 机器上。执行 AD 用户查找时发生错误。请参阅下面的错误输出:

这是我的脚本:https://github.com/nocode99/powershell/blob/master/UserDisableGroupRemoval.ps1

Property 'filter' cannot be found on this object; make sure it exists and is settable.
At C:\Admin\test.ps1:23 char:12
+     $ADsearch. <<<< filter = "(&(objectClass=user)(sAMAccountName=$user))"
    + CategoryInfo          : InvalidOperation: (filter:String) [], RuntimeException
    + FullyQualifiedErrorId : PropertyNotFound

You cannot call a method on a null-valued expression.
At C:\Admin\test.ps1:24 char:32
+     $ADfind = $ADsearch.findOne <<<< ()
    + CategoryInfo          : InvalidOperation: (findOne:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

有什么想法吗? ActiveDirectory 模块导入没有问题,我希望我的用户 运行 在他们的机器上本地而不是 DC。

看来我需要在查找之前包含一个过滤器并添加:

$adsearch = [adsisearcher]""

虽然我不确定为什么这在 AD 服务器本身没有过滤器的情况下有效。