如何从powershell中的get-mobiledevicestatistics获取确切的用户名

时间:2015-04-06 16:55:46

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

我有一个小脚本可以从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

3 个答案:

答案 0 :(得分:4)

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

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

这应该为他们拥有的每个设备输出用户。然后,您可以轻松地将其导出到Export-CSV或某种类似的东西。

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

答案 1 :(得分:1)

如果您有身份字段,如下所示

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

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

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

>UserName

PowerShell开始使用数字0进行索引,因此要请求列表中的第四个条目,我们请求索引编号为3.

<强>更新

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

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

答案 2 :(得分:-1)

String message=(String)request.getAttribute("message");