【问题标题】:how to get exact user name from get-mobiledevicestatistics in powershell如何从PowerShell中的get-mobiledevicestatistics获取准确的用户名
【发布时间】:2015-06-11 02:42:14
【问题描述】:

我有一个小脚本可以从 Exchange 2013 服务器获取所有用户移动设备信息。

Get-Mailbox -ResultSize Unlimited | 
ForEach {Get-MobileDeviceStatistics -Mailbox:$_.Identity} |
Select-Object @{label="User" ; expression={$_.Identity}},DeviceOS, lastsuccesssync

我只想获得一个准确的用户名,而不是 AD 中的路径。我怎么能在expression={?}中做到这一点

这是另一个脚本,它给了我用户名,但属于用户的所有设备不是分开的,它们都在一行中......

$EASMailboxes = Get-CASMailbox -Filter {HasActiveSyncDevicePartnership -eq $True -and DisplayName -notlike "CAS_{*"} | Get-Mailbox
$EASMailboxes | Select-Object DisplayName, PrimarySMTPAddress, @{Name="Mobile Devices";Expression={(Get-MobileDeviceStatistics -Mailbox $_.Identity).DeviceOS}} | 
Out-GridView

【问题讨论】:

  • 用户名当前是什么样的?你能用那个更新问题吗?
  • 它看起来像这样domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone。所以我使用这个expression={$_.Identity -split "/" | select -last -3} 来获取名字,但它给了我最后三个单词...我只需要倒数第三个
  • 在那种情况下,这不是问题,但所有用户名都在同一个 ou 中吗?你可以从Get-Mailbox 那里得到它,你已经知道了。
  • @Matt,是的,你是对的,这将是另一个问题。我更新了另一个脚本,这个脚本给了我用户名,但属于用户的所有设备都在一行中,我将每个设备放在单独的行中

标签: powershell exchange-server exchange-server-2013


【解决方案1】:

如果你有身份字段,看起来像这样

domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone

然后在/ 上拆分并获得第三个结果,您只需请求:

$_.Identity.Split("/")[3]

>UserName

PowerShell 从零开始索引,因此要请求列表中的第四个条目,我们请求索引号 3。

更新

OP 提到 OU 级别可能会有所不同,这意味着他不能指望一个固定的位置来请求索引。为了适应这种情况,试试这个方法,它会查找 ExchangeActiveSyncDevices 的索引,然后选择之前的索引位置。

$_.Identity.Split('/')[($_.Identity.Split('/').Indexof('ExchangeActiveSyncDevices')-1)]

【讨论】:

  • 就像@matt 指出的那样,我不能使用[#] 因为OU 级别不确定。
  • 添加了不同的方法,基于在 ExchangeActiveSynDevices 之前查找索引位置。
【解决方案2】:

我没有测试这个的环境,但这不是你要找的吗?

Get-Mailbox -ResultSize Unlimited | ForEach {
    $user = $_.SamAccountName
    Get-MobileDeviceStatistics -Mailbox:$_.Identity |
    Select-Object @{label="User" ; expression={$user}},DeviceOS, lastsuccesssync
}

这应该在自己的线路上为他们拥有的每台设备输出用户。然后,您可以轻松地将其导出到 Export-CSV 或类似的东西。

我们保存$user,以便稍后在管道中使用它。也可以使用Add-Member,但结果是一样的。

【讨论】:

    【解决方案3】:
    Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync
    on e2k13
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-15
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多