运行 在另一台机器上时出现 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 服务器本身没有过滤器的情况下有效。
我写了一个脚本来获取一个 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 服务器本身没有过滤器的情况下有效。