2012-10-22 47 views
1

爲什麼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 $用戶名) - 和((給定名稱-cne $給定名稱))' 錯誤信息: '運營商不支持:-cne' 在位置:'50'。 在Microsoft.ActiveDirectory.Management.QueryParser.yyparse() 在Microsoft.ActiveDirectory.Management.QueryParser..ctor(字符串查詢,VariableExpressionConverter varExpressionConverter,ConvertSearchFilterDelegate searchFilterConverterDelegate) 在Microsoft.ActiveDirectory.Management.Commands.ADGetCmdletBase`3.BeginProcessingOverride ()

查詢成功,當我從cne刪除c

回答

2

遺憾的是並不是所有的運營商都通過PowerShell的過濾器PARAM支持。你的過濾器將會/使用| Where()語句(它在我的本地系統上做過)。

Powershell filter support list from 2011(其列出「NE」作爲一個選項)

+1

讓我們希望,將在未來的版本中得到解決,這不是很一致。 以供將來參考,下面的代碼工作http://pastebin.com/vDcJEvXu – svandragt

+0

我沒有看過PowerShell的3,但是,但是希望所有的運營商變得可用。好主意只在給定的名字上。應該防止你的代碼變慢。 – Landjea

+0

可否請你在你的答案給的代碼。 '| Where()'也不起作用,因爲Get-ADuser要求您默認有一個過濾器 –

0

這是Get-ADUser濾波器參數的限制,而不是Powershell的尤其如此。嘗試-ne來代替。

相關問題