Список пользователей, использующих мобильные устройства для получения почты.

8 thoughts on “Список пользователей, использующих мобильные устройства для получения почты.”

  1. Похоже, вывод параметра DeviceUserAgent для каждого пользователя надо в массив выводить. Правда, задача это не тривиальная. Надо Васю ждать =)

  2. Ждем Васю или Вадима. Мне бы еще сортировку по времени сделать. И если в списке устройств у одного пользователя больше одного устройства, хотелось бы, чтобы показывало только то, которое синхронизировалось последним.

  3. я тут мимо пробегал. На счёт пустой колонки с именами в последнем варианте, то там проблема вот в чём:

    $Mailbox | foreach {$_.Name; Get-ActiveSyncDeviceStatistics –Mailbox $_.Identity}

    по концепции конвейера, в нём в любой момент времени не может быть больше 1 объекта. Т.е. данные по конвейеру передаются поштучно. А у вас за 1 итерацию цикла генерируется 2 объекта:
    $_.name и Get-ActiveSyncDeviceStatistics –Mailbox $_.Identity. Format-Table с ними разберётся спокойно, поскольку он просто форматирует вывод. Но его потрясаяющая работа (Format-Table может делать потрясающие вещи) создаёт ощущение, что одна строчка — это вывод составленный из одного объекта, а на самом деле — 2. А во втором примере вы делаете вот что:

    where {$_.DeviceUserAgent –like ‘MSFT*’}

    и через этот фильтр пройдёт только вывод команды Get-ActiveSyncDeviceStatistics –Mailbox $_.Identity, поскольку у объекта $_.name нету свойства DeviceUserAgent и, следовательно, объекты $_.name будут отфильтрованы всегда.

    Сейчас немного разгребусь у себя, попробую что-то сваять для вас.

  4. как вариант:
    $Mailbox | foreach {
    $name = $_.Name
    Get-ActiveSyncDeviceStatistics –Mailbox $_.Identity | ?{$_.DeviceUserAgent -like «MSFT*»} | ft @{l=»UserName»;e={$name}}, DeviceUserAgent, LastSuccessSync
    }

    тут есть одна трудность, что из-за цикла foreach не получится так просто сделать вывод в одну таблицу, а для каждой итерации будет своя таблица. Пока ничего умного на ум не приходит.

  5. Олег, принимай работу. Комменты ниже по тексту.
    ======================================
    $Mailbox = Get-CASMailbox | where {$_.HasActiveSyncDevicePartnership –eq $true}

    $Table = New-Object System.Management.Automation.PSObject #Создаль массив
    $Table | Add-Member NoteProperty «UserName» ($null) #Создали поля
    $Table | Add-Member NoteProperty «SyncTime» ($null)
    $Table | Add-Member NoteProperty «Device» ($null)
    «UserName,SyncTime,Device»>C:\Table.txt #Инициируем файл. Создаем шапку таблицы

    #Понеслась.. Цикл в цикле — объединяем две таблицы (майлбоксы и девайсы) в одну.
    $Mailbox | foreach { $i++
    $name=$_.DisplayName;
    $array1=Get-ActiveSyncDeviceStatistics -Mailbox $_.Identity;
    $array1 | foreach {
    $Table.UserName=»$name»
    $Table.SyncTime=»$($_.lastsuccesssync)»
    $Table.Device=»$($_.deviceuseragent)»
    #$Table #Можно вывести на экран для «просто посмотреть»
    «»+$Table.UserName+»,»+$Table.SyncTime+»,»+$Table.Device>>C:\Table.txt #Не пришло на ум как обойтись без вынрузки в файл. Тут собираем данные для массива.
    }
    }

    $Table = Import-Csv C:\Table.txt #Загрузили массив из файла
    $str=»» #Инициируем вспомогательную переменную
    «UserName,SyncTime,Device»>C:\Table.txt #Инициируем файл. Создаем шапку таблицы. (старое содержимое не нужно)
    #Сортируем массив по полю SyncTime по убыванию и перебираем результат. Отбираем для записи в файл только неповторяющиеся записи по полю UserName.
    #В итоге получаем список-массив с одним вхождением по UserName и последним значением поля SyncTime (т.е. запись о последней синхронизации девайса пользователя).
    $Table | Sort-Object -Property SyncTime -Descending |
    foreach { if ($str -notmatch $_.UserName) {$str+=$_.UserName; «»+$_.UserName+»,»+$_.SyncTime+»,»+$_.Device>>C:\Table.txt} }

    $Table = Import-Csv C:\Table.txt #Загрузили массив из файла
    #$Table #Выводим результат на экран
    $Table>C:\Table.txt #Выводим результат в файл
    C:\Table.txt
    Remove-Item -path C:\Table.txt #Чистим за собой

    Write-Host «Олег, с тебя пиво»

  6. Ух ты! Илгиз, молодчина! Сегодня вечером проверю. Пиво за мной не заржавеет :)
    А Вася только поржать в соседнем посте смог, нет бы помочь :)

  7. # Почистил рудименты от неудавшегося функционала
    #############################
    #ver 1.1
    #
    #Получаем список майлбоксов
    $Mailbox = Get-CASMailbox | where {$_.HasActiveSyncDevicePartnership –eq $true}

    «UserName,SyncTime,Device»>C:\Table.txt #Инициируем файл. Создаем шапку таблицы

    #Цикл в цикле — перебираем майлбоксы и по каждому получаем список девайсов, объединяем майлбоксы и девайсы в одну таблицу.
    $Mailbox | foreach { $i++
    $name=$_.DisplayName;
    $array1=Get-ActiveSyncDeviceStatistics -Mailbox $_.Identity;
    $array1 | foreach {
    #Не пришло на ум как обойтись без выгрузки в файл. Тут собираем данные для массива.
    «»+$name+»,»+$($_.lastsuccesssync)+»,»+$($_.deviceuseragent)>>C:\Table.txt
    }
    }

    $Table = Import-Csv C:\Table.txt #Загрузили массив из файла
    $str=»» #Инициируем вспомогательную переменную
    «UserName,SyncTime,Device»>C:\Table.txt #Инициируем файл. Создаем шапку таблицы. (старое содержимое не нужно)
    #Сортируем массив по полю SyncTime по убыванию и перебираем результат. Отбираем для записи в файл только неповторяющиеся записи по полю UserName.
    #В итоге получаем список-массив с одним вхождением по UserName и последним значением поля SyncTime (т.е. запись о последней синхронизации девайса пользователя).
    $Table | Sort-Object -Property SyncTime -Descending |
    foreach { if ($str -notmatch $_.UserName) {$str+=$_.UserName; «»+$_.UserName+»,»+$_.SyncTime+»,»+$_.Device>>C:\Table.txt} }

    $Table = Import-Csv C:\Table.txt #Загрузили массив из файла
    #$Table #Выводим результат на экран
    $Table>C:\Table.txt #Выводим результат в файл
    C:\Table.txt

    Remove-Item -path C:\Table.txt #Чистим за собой

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s