Powershell: как правильно передать переменную в команду

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

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

  1. Определить пользователя из ввода

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

  3. Удалить телефон с помощью переменной phoneID

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


скрипт

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

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

1 ответ

Решение

Когда вы используете 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
Другие вопросы по тегам