为什么不支持受支持的运算符?

时间:2012-10-22 14:14:27

标签: powershell active-directory

为什么Powershell会说支持的运营商不受支持?

我有以下(简化)代码,其中包含case-sensitive not-equal operator

$filter_accountchanged = { (sAMAccountName -eq $username) -and (GivenName -cne $givenname) }
try {
        if (Get-ADUser -filter $filter_accountchanged) { # update aduser }
catch {
        Write-host $_.Exception

在什么情况下会导致我看到以下错误?

  

Microsoft.ActiveDirectory.Management.ADFilterParsingException:解析查询时出错:'(sAMAccountName -eq $ username) - 和((GivenName -cne $ givenname))'错误消息:'运算符不支持:-cne'位于:' 50' 。      在Microsoft.ActiveDirectory.Management.QueryParser.yyparse()      在Microsoft.ActiveDirectory.Management.QueryParser..ctor(String query,VariableExpressionConverter varExpressionConverter,ConvertSearchFilterDelegate searchFilterConverterDelegate)      在Microsoft.ActiveDirectory.Management.Commands.ADGetCmdletBase`3.BeginProcessingOverride()

当我从c移除cne时查询成功。

2 个答案:

答案 0 :(得分:2)

不幸的是,Powershell的过滤器参数并不支持所有运算符。您的过滤器将/与|一起使用Where()语句(它在我的本地系统上完成)。

Powershell filter support list from 2011(将“ne”列为选项)

答案 1 :(得分:0)

这是Get-ADUser Filter参数的限制,特别是PowerShell的限制。请尝试-ne。