为什么PowerShell说不支持受支持的操作员?
i具有以下(简化的)代码,其中包含一个对案例敏感的非平等运算符:
$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) - 和((fivenname -cne $ fivenname)'错误消息)'错误消息:'操作员不支持:-cne'在位置:'-cne'在位置:''50'。 在microsoft.activedirectory.management.squeryparser.yyparse()上 在Microsoft.Activedirectory.Management.Management.Cereparser..ctor(字符串查询,variable expressionConverter varexpressionconverter,ConvertsearchFilterDelegate searchFilterConverterDelegate)) 在Microsoft.activedirectory.management.commands.AdgetCmdletBase`3.beginProcessingOverride()
当我从cne
中删除c
时,查询会成功。
不幸的是,并非所有运算符都由PowerShell的过滤器参数支持。您的过滤器将/确实可以使用|其中()语句(在我的本地系统上使用)。
PowerShell过滤器支持列表(列出了" NE"作为选项)
这是Get-ADUser
滤波器参数的限制,而不是PowerShell的限制。试试-ne。