2014-01-27 2 views
0

Прошу прощения, если я заручил терминологию для этого и понял, что я очень новичок в PowerShell. Я прочитал некоторые из руководств, и эта концепция явно не доходит до меня.Powershell: как правильно передать значение команды

Концепция: Я хочу удалить мобильное устройство от пользователя в обмен 2010

  1. Идентификация пользователя от ввода

  2. Создать переменную с входом PhoneID

  3. Извлеките телефон, используя переменную phoneID

Я считаю, что моя проблема заключается в том, как я передаю эти данные следующей команде. Я знаю, что добавленный «@ [Identity», который добавлен для добавления, должен быть удален, и я помню, что читал что-то о том, как при передаче данных, таких как Powershell, нет контекста? Вот мой очень простой сценарий.


Script

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 
. $env:ExchangeInstallPath\bin\RemoteExchange.ps1 
Connect-ExchangeServer -auto 

$PU = Read-Host "Enter Username" 

$did = get-activesyncdevice -mailbox $PU | Select-Object identity 

Remove-ActiveSyncDevice -Identity $did 

Ошибка

Моя ошибка заключается в следующем, и я попытался исследовать то, что я делаю неправильно, но я просто не получая его :-(, я заменил фактический вывод для учетной записи на XX.

Remove-ActiveSyncDevice : Cannot bind parameter 'Identity'. Cannot convert value "@{Identity=XX" to type 
"Microsoft.Exchange.Configuration.Tasks.ActiveSyncDeviceIdParameter". Error: "Cannot convert the "@{Identity=XX}" value of type 
"Selected.Microsoft.Exchange.Data.Directory.SystemConfiguration.ActiveSyncDevice" to type "Microsoft.Exchange.Configuration.Tasks.ActiveSyncDeviceIdParameter"." 
At line:1 char:35 
+ Remove-ActiveSyncDevice -Identity $did 
+         ~~~~ 
    + CategoryInfo   : InvalidArgument: (:) [Remove-ActiveSyncDevice], ParameterBindingException 
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.Exchange.Management.Tasks.RemoveMobileDevice 

Любая помощь или совет по этому вопросу будут изумительными!

ответ

4

Когда вы используете Select-Object и даете ему только одно имя свойства, вы получаете и объект только с одним свойством. Но даже если у него есть только одно свойство, вам все равно придется ссылаться на это свойство по имени:

Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010 
. $env:ExchangeInstallPath\bin\RemoteExchange.ps1 
Connect-ExchangeServer -auto 

$PU = Read-Host "Enter Username" 

$did = get-activesyncdevice -mailbox $PU | Select-Object identity 

Remove-ActiveSyncDevice -Identity $did.identity 
+0

В качестве альтернативы вы можете сделать 'Select-Object -ExpandProperty identity'. –

+0

Или получить доступ к атрибуту непосредственно в присваивании '$ did = (get-activesyncdevice -mailbox $ PU) .identity' – Duncan

+0

Отличные ответы, все это сработало, и я чему-то научился :-) Спасибо всем! – Eclipse00