У меня проблемы с синтаксисом командлета Exchange Get-CASMailbox.
Я работаю в среде 2007 года и проверил в PowerGUI 2.4, 3.0 и PS ISE 2.0.
Пример кода для демонстрационных целей:
[String[]] $MailServerList = @('IP-0A207B07')
$MailServerList | %{
Get-CASMailbox -ResultSize:10 -Filter {ServerName -eq $_}
}
В этом примере есть только один почтовый сервер. Во время вызова Get-CASMailbox оператор конвейера $ _ имеет IP-0A207B07, а $ _. GetType () подтверждает, что это строка. Если эта строка запускается, я получаю следующую ошибку:
Get-CASMailbox: Невозможно привязать параметр «Filter» к цели. Параметр исключения «Фильтр»: «Невозможно привести объект типа« System.Management.Automa ».
ion.PSObject 'для ввода' System.String '. "
В C: \ Users \ erawlins \ Desktop \ MailboxFilterBug.ps1: 7 char: 38
+ Get-CASMailbox -ResultSize: 10 -Filter <<<< {ServerName -eq $ _}
+ CategoryInfo: WriteError: (:) [Get-CASMailbox], ParameterBindingException
+ FullyQualifiedErrorId: ParameterBindingFailed, Microsoft.Exchange.Management.RecipientTasks.GetCASMailbox </p>
Я действительно смущен этим. Я пробовал каждый синтаксис, который мог найти, и в каждом случае попытка использовать $ _ выдает одну и ту же ошибку. Если я просто использую любую другую переменную, такую как $ test = $ _, и подставляю ее в запросе, она работает нормально.
Думая, что могут быть некоторые проблемы с использованием оператора конвейера (может быть, когда Get-CASMailbox начнет выполнять что-то еще в $ _), я также попытался использовать свойство объекта (которое является частью исходного кода). Следующие две строки были добавлены перед вызовом get-casmailbox
$ServerInfo = "" | Select-Object Name
$ServerInfo.Name = $_.ToString()
Get-CASMailbox -ResultSize: 10 -Filter {ServerName -eq $ ServerInfo.Name}
Сбой также, то же сообщение об ошибке. Так что я действительно растерялся, почему взяв $ _ или $ ServerInfo.Name и присвоив его $ test, затем использование $ test работает нормально, но первые два метода выдают ошибку. Мне кажется, что каждый из них должен работать, поскольку они все строки. Какая разница?