Powershell: как правильно передать переменную в команду
Я прошу прощения, если я зарезал терминологию для этого, и понимаю, что я очень плохо знаком с PowerShell. Я прочитал некоторые из руководств, и эта концепция явно не доходит до меня.
Концепция: я хочу удалить мобильное устройство от пользователя в Exchange 2010
Определить пользователя из ввода
Создать переменную из ввода PhoneID
Удалить телефон с помощью переменной 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