Как получить точное имя пользователя из get-mobiledevicestatistics в powershell
У меня есть небольшой скрипт для получения информации обо всех пользовательских мобильных устройствах с сервера 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 ответа
У меня нет среды, чтобы проверить это, но разве это не то, что вы ищете?
Get-Mailbox -ResultSize Unlimited | ForEach {
$user = $_.SamAccountName
Get-MobileDeviceStatistics -Mailbox:$_.Identity |
Select-Object @{label="User" ; expression={$user}},DeviceOS, lastsuccesssync
}
Это должно выводить пользователя для каждого устройства, им принадлежащего на его собственной линии. Вы можете легко экспортировать это в Export-CSV
или что-то подобное.
Мы сохраняем $user
так что доступно позже в трубе. Мог бы также использовать Add-Member
но результат был бы таким же.
Если у вас есть поле идентичности, которое выглядит так
domain.com/Users/OU/UserName/ExchangeActiveSyncDevices/iPhone
Затем разделить на /
и для получения третьего результата вы просто запрашиваете:
$_.Identity.Split("/")[3]
>UserName
PowerShell начинает индексирование с нуля, поэтому для запроса четвертой записи в списке мы запрашиваем индекс № 3.
Обновить
OP отметил, что уровень OU может варьироваться, что означает, что он не может рассчитывать на фиксированную позицию для запроса индекса. Чтобы приспособиться к этому сценарию, попробуйте этот метод, который будет искать индекс ExchangeActiveSyncDevices и затем выбирать позицию индекса до этого.
$_.Identity.Split('/')[($_.Identity.Split('/').Indexof('ExchangeActiveSyncDevices')-1)]
Get-Mailbox -resultsize unlimited|foreach {Get-MobileDeviceStatistics -Mailbox:$_.identity} |Select-Object @{l="user";e={$_.Identity.parent.parent.name}}, lastsuccesssync
on e2k13