1

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

我有以下(简化的)代码,其中包含区分大小写的不等于运算符

$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) -and ((GivenName -cne $givenname))' 错误消息:'Operator Not supported: -cne' at position: '50'。在 Microsoft.ActiveDirectory.Management.QueryParser.yyparse() 在 Microsoft.ActiveDirectory.Management.QueryParser..ctor(字符串查询,VariableExpressionConverter varExpressionConverter,ConvertSearchFilterDelegate searchFilterConverterDelegate) 在 Microsoft.ActiveDirectory.Management.Commands.ADGetCmdletBase`3.BeginProcessingOverride()

当我删除cfrom时,查询成功cne

4

2 回答 2

2

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

2011 年的 Powershell 过滤器支持列表(其中列出了“ne”作为选项)

于 2012-10-22T14:23:30.060 回答
0

这是Get-ADUserFilter 参数的限制,而不是 PowerShell 的限制。试试 -ne 。

于 2012-10-22T14:46:56.503 回答