为什么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
时查询成功。
答案 0 :(得分:2)
不幸的是,Powershell的过滤器参数并不支持所有运算符。您的过滤器将/与|一起使用Where()语句(它在我的本地系统上完成)。
Powershell filter support list from 2011(将“ne”列为选项)
答案 1 :(得分:0)
这是Get-ADUser
Filter参数的限制,特别是PowerShell的限制。请尝试-ne。