2

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

3 回答 3

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,但结果是一样的。

于 2015-04-06T18:12:38.063 回答
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)]
于 2015-04-06T18:09:16.600 回答
-1
Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync
on e2k13
于 2016-02-16T09:42:22.240 回答