我在使用AD模块的PowerShell中遇到脚本问题。Active Directory PowerShell筛选器
我知道AD命令如何接收查询的一般经验法则,所以我写了这个脚本(我认为)会符合这些准则。
$CSV=Import-Csv "c:\temp\deleteduserlist.csv"
foreach ($entry in $CSV)
{
$filter = "{SamAccountName -like ""$($entry.username)""}"
Get-ADObject -filter $filter
}
基本上,我需要能够查询并恢复所有已删除用户的但它失败:
Error Message: 'syntax error' at position: '1'
起初我通过与单引号,像这样的过滤器发送:
{SAM帐户名状 'XXX'“}
不过我已经解决了这个问题,现在
让我困惑的一件事是,我可以从字面上显示$ filter的结果,将它们手动复制到Get-ADObject -Filter(粘贴),并且它可以正常工作。因此,我不明白为什么PowerShell不喜欢它..
所有错误:
Get-ADObject : Error parsing query: '{SamAccountName -like "xxxx"}' Error M essage: 'syntax error' at position: '1'. At C:\temp\GetDeleted.ps1:5 char:14 + Get-ADObject <<<< -filter $filter + CategoryInfo : ParserError: (:) [Get-ADObject], ADFilterParsing Exception + FullyQualifiedErrorId : Error parsing query: '{SamAccountName -like "xxx "}' Error Message: 'syntax error' at position: '1'.,Microsoft.ActiveD irectory.Management.Commands.GetADObject
直接计入'-Filter'期待* *任意字符串或脚本块 - 不是在字符串中的脚本块定义。 '$ filter = {SamAccountName -like“$($ entry.username)”}'就足够了,不需要在它周围引用 –
好吧,这是否意味着即使进行更改,您建议这是不可能的,因为什么-Filter期待看到? – CharlesH
啊好吧,如果我拿走外部引号,那么我得到SamAccountName-like“$($ entry.username)”,这对脚本起作用,但当然给我没有结果:) – CharlesH