我有一个小脚本可以从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
答案 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");