Powershell:如何将变量正确传递给命令

Powershell:如何将变量正确传递给命令,powershell,activesync,ems,Powershell,Activesync,Ems,我很抱歉,如果我破坏了这方面的术语,并理解我对PowerShell非常陌生。我已经阅读了一些指南,但我显然没有理解这个概念 概念: 我想从Exchange 2010中的用户中删除移动设备 从输入中识别用户 从PhoneID的输入创建变量 使用phoneID变量卸下手机 我相信我的问题在于如何将这些数据传递给下一个命令。我知道get添加的附加“@[Identity”应该被删除,我记得读过一些关于如何传递数据的文章,比如Powershell没有上下文?这是我的非常简单的脚本 脚本 Add-PSSn

我很抱歉,如果我破坏了这方面的术语,并理解我对PowerShell非常陌生。我已经阅读了一些指南,但我显然没有理解这个概念

概念: 我想从Exchange 2010中的用户中删除移动设备

  • 从输入中识别用户

  • 从PhoneID的输入创建变量

  • 使用phoneID变量卸下手机

  • 我相信我的问题在于如何将这些数据传递给下一个命令。我知道get添加的附加“@[Identity”应该被删除,我记得读过一些关于如何传递数据的文章,比如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
    


    关于这方面的任何帮助或建议都将是惊人的!

    当您使用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
    

    当您使用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
    

    或者,您可以执行
    选择对象-ExpandProperty identity
    。或者直接在分配中访问属性
    $did=(获取activesyncdevice-邮箱$PU)。identity
    很好的答案,这些都很有效,我学到了一些东西:-)谢谢大家!或者你可以做
    选择Object-ExpandProperty-identity
    。或者直接在作业中访问属性
    $did=(get-activesyncdevice-mailbox$PU)。identity
    很好的答案,这些都有效,我学到了一些东西:-)谢谢大家!