Splatting не работает с параметром -Filter - PullRequest
1 голос
/ 13 марта 2019

У меня есть длинная строка, которую я хочу, чтобы ее было легче читать:

$Mail = "stantastic@example.com"    
Get-ADUser -Server example.com:3268 -Filter {EmailAddress -eq $Mail} -Properties CN,co,Company,Department,DisplayName,SamAccountName,State,Office,EmailAddress 

Я прочитал, что приятно использовать сплаттинг, поэтому я пытаюсь:

$Params = @{
    Server = 'example.com:3268'
    Filter = '{ EmailAddress -eq $Mail }'
    Properties = 'CN,co,Company,Department,DisplayName,SamAccountName,State,Office,EmailAddress'
}

Get-ADUser @Params

Новыполнение этого выдает ошибку:

Get-ADUser : Error parsing query: '{ EmailAddress -eq stantastic@example.com }' Error Message: 'syntax error' at position: '1'.
At line:1 char:1
+ Get-ADUser @Params
+ ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ParserError: (:) [Get-ADUser], ADFilterParsingException
    + FullyQualifiedErrorId : ActiveDirectoryCmdlet:Microsoft.ActiveDirectory.Management.ADFilterParsingException,Microsoft.ActiveDirectory.Management.Commands.GetADUser

Чего мне не хватает?

1 Ответ

4 голосов
/ 13 марта 2019

Вы должны передать фильтр командлетам ActiveDirectory как string. Вам не нужно включать скобки в свой код:

Get-ADUser -Filter "EmailAddress -eq '$Mail'"

В то время как вы можете передать scriptblock, оно все равно неявно превращается в string. Кроме того, вы передаете свои свойства как один string, когда он ожидает array из string.


Правильный путь:

$aduserParams = @{
    Server     = 'example.com:3268'
    Filter     = "EmailAddress -eq '$Mail'"
    Properties = 'CN', 'co', 'Company', 'Department', 'DisplayName', 'SamAccountName', 'State', 'Office', 'EmailAddress'
}
Get-ADUser @aduserParams

Я предлагаю проверить Get-Help для типов параметров:

Get-ADUser -Filter <string>
[-ResultPageSize <int>]
[-ResultSetSize <System.Nullable[System.Int32]>]
[-SearchBase <string>]
[-SearchScope {Base | OneLevel | Subtree}]
[-AuthType {Negotiate | Basic}]
[-Credential <PSCredential>]
[-Partition <string>]
[-Properties <string[]>]
[-Server <string>]
[<CommonParameters>]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...