Вопрос или проблема
Я пытаюсь запустить скрипт PowerShell, который очистит любые телефоны, не синхронизировавшиеся как минимум 110 дней с сервером Exchange 2013.
Мой код получает данные и экспортирует их в CSV, но когда я пытаюсь передать команду Remove-MobileDevice для удаления устройств, скрипт не срабатывает. Ничего полезного я не нашел в интернете. Большинство использует устаревшие команды ActiveSyncDevice.
Вот мой код, я новичок в PowerShell и буду благодарен за любую помощь:
Get-MobileDevice -result unlimited | Get-MobileDeviceStatistics | where {$_.LastSuccessSync -le (Get-Date).AddDays(“-110”)} | select devicetype, deviceidentity, deviceos, deviceuseragent, identity | Export-csv C:\PhoneSync\Logs\Stale_Devices_110days_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv | foreach (Remove-MobileDevice -Identity DeviceUserAgent -confirm:$false)
Существует ли более хорошее (автоматическое) решение, встроенное в Exchange? Поскольку в Exchange 2013/2016 Microsoft добавил значение EasMaxInactivityForDeviceCleanup в политику ограничения и описал его здесь как:
Параметр EasMaxInactivityForDeviceCleanup указывает, сколько времени будет активна партизация устройства пользователя. По умолчанию нет ограничения на число дней, в течение которых партизация устройства пользователя будет оставаться активной. Используйте это значение, если хотите минимизировать количество неактивных партизаций устройств в вашей организации. Чтобы использовать эту настройку, укажите значение в днях с момента последней синхронизации пользователя, чтобы удалить партизацию устройства.
Если бы я был на вашем месте, я бы создал новую политику ограничения, как объясняется здесь, и назначил бы ее вашим пользователям. После этого, если пользователь добавляет новое устройство, сервер Exchange проверит настроенные устройства и автоматически удалит неиспользуемое во время добавления нового устройства. Вам не нужно будет запускать скрипт, сервер в основном позаботится об этом автоматически.
Как только у вас будет список устройств, включая Guid, вы можете выполнить это, чтобы удалить все устройства из этого .csv файла.
Import-CSV (ваш_путь_и_имя_файла.csv) | foreach{Remove-MobileDevice -Identity $_.Guid}
Ответ или решение
Для того чтобы удалить устаревшие мобильные устройства, которые не синхронизировались как минимум 110 дней с сервером Exchange 2013, вы можете использовать следующий PowerShell скрипт с небольшой корректировкой. Также я расскажу о более автоматизированном решении, которое встроено в Exchange.
Скрипт PowerShell для удаления устаревших мобильных устройств
Используйте следующий скрипт, чтобы получить список мобильных устройств, которые не синхронизировались в течение 110 дней, и удалить их:
# Получаем все мобильные устройства, которые не синхронизировались более 110 дней
$staleDevices = Get-MobileDevice -ResultUnlimited | Get-MobileDeviceStatistics | Where-Object {$_.LastSuccessSync -le (Get-Date).AddDays(-110)}
# Экспортируем данные в CSV для вашего учета
$staleDevices | Select-Object devicetype, deviceidentity, deviceos, deviceuseragent, identity | Export-Csv C:\PhoneSync\Logs\Stale_Devices_110days_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv -NoTypeInformation
# Удаляем устаревшие устройства
foreach ($device in $staleDevices) {
Remove-MobileDevice -Identity $device.Identity -Confirm:$false
}
Этот скрипт извлекает все мобильные устройства, которые не синхронизировались более 110 дней, и удаляет их из вашего Exchange сервера.
Автоматическое удаление устаревших мобильных устройств
С учетом изменений в Exchange 2013 и 2016, вы можете использовать параметр EasMaxInactivityForDeviceCleanup
, который задает максимальный срок неактивности устройств.
-
Создайте новую политику ограничений с использованием следующей команды:
New-ThrottlingPolicy -Name "DeviceCleanupPolicy" -EasMaxInactivityForDeviceCleanup 110
-
Примените эту политику к пользователям:
Set-Mailbox -Identity "user@example.com" -ThrottlingPolicy "DeviceCleanupPolicy"
Это позволит Exchange серверу автоматически удалять неактивные мобильные устройства по мере добавления новых. Таким образом, вам не придется вручную запускать скрипт для удаления устаревших устройств.
Дополнительный совет
Если вы хотите удалить устройства на основе уже существующего списка в CSV, вы можете использовать:
Import-Csv C:\PhoneSync\Logs\Stale_Devices_110days.csv | ForEach-Object {
Remove-MobileDevice -Identity $_.Identity -Confirm:$false
}
Заключение
Итак, вы можете либо использовать предложенный PowerShell скрипт для ручного удаления устаревших устройств, либо настроить автоматическую политику через EasMaxInactivityForDeviceCleanup
, чтобы Exchange сам справлялся с этой задачей в будущем. Обе опции помогут вам поддерживать порядок и чистоту в вашей среде Exchange.