Автоматическая очистка кеша SCCM на клиентской машине

Вопрос или проблема

Я хотел бы запустить скрипт, который автоматически очищает кеш SCCM на клиентском компьютере. Для этого я написал простой пакетный файл:

if exist %Windir%\ccmcache (
    RMDIR %Windir%\ccmcache /S /Q
)

Я развернул это как “приложение” через SCCM. В основном я создал развертывание, чтобы запустить этот скрипт как “удаление” программы и выбрал метод обнаружения, чтобы проверить наличие %Windir%\ccmcache на клиентской машине. Проблема в том, что когда он пытается очистить кеш, пакетный файл, который выполняется, хранится в кеше и затем не удается. Я получаю следующую ошибку:

The software change returned error code 0x87D01106(-2016407290).

Есть ли какой-то обходной путь для этого?

Вы можете попробовать функцию запуска скриптов: Создание и запуск скриптов PowerShell из консоли диспетчера конфигураций

Наибольшее ограничение, насколько мне известно, заключается в отсутствии планирования (вам также нужно быть как минимум на одной из последних нескольких версий текущей ветки).

Ответ или решение

С проблемой очистки кеша SCCM на клиентском компьютере сталкиваются многие специалисты в IT, особенно когда применяется сценарий в качестве приложения, развёрнутого через SCCM. Рассмотрим эту ситуацию и предложим наиболее подходящее решение для автоматического выполнения данной задачи.

Проблема

Вы создали командный файл для очистки папки %Windir%\ccmcache, но столкнулись с ошибкой из-за того, что сам файл находится в этой кэше, тем самым предотвращая его удаление. Эта проблема вполне предсказуема, так как SCCM кэширует исполняемые файлы, и при их попытке удаления возникают конфликты.

Решение проблемы

1. Изменение схемы развертывания

Одним из решении может быть изменение точки развертывания сценария. Рассмотрите возможность размещения исполняемого файла вне каталога кэша. Например, можно использовать временные каталоги или сетевые ресурсы.

2. Использование PowerShell и Run Scripts

PowerShell предоставляет больше гибкости и возможностей по сравнению с традиционными bat-файлами. Рекомендуется создать PowerShell скрипт для очистки кэша. Вот пример скрипта:

$CachePath = "$env:windir\ccmcache"

if (Test-Path $CachePath) {
    Get-ChildItem -Path $CachePath -Recurse -Force | Remove-Item -Force -Recurse
}

Для решения проблемы с кэшированием скриптов можно использовать возможность Run Scripts в SCCM. Она позволяет запускать сценарии на клиентских компьютерах напрямую из консоли Configuration Manager, что исключает их создание в локальном кэше.

3. Автоматизация и планирование

Хотя Run Scripts не обеспечивает встроенного планирования, вы можете создать задачу в планировщике Windows, которая будет запускать PowerShell-скрипт в заданные временные интервалы. Это можно сделать через SCCM, создав пакет и программу с заданием для выполнения скрипта через Task Scheduler.

4. Обновление до последней версии SCCM

Убедитесь, что вы используете актуальную версию SCCM, поскольку новые релизы могут содержать улучшения и функции, которые упростят процесс развертывания и управления приложениями.

Заключение

Очистка кеша SCCM на клиентских машинах может быть автоматизирована с использованием PowerShell и функциональности Run Scripts. Размещение сценариев вне каталога кэша и использование актуальных возможностей SCCM значительно упростят эту задачу. Следует также разрабатывать и тестировать сценарии в безопасной среде перед их широким применением, чтобы избежать возможных критических ошибок.

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

Капча загружается...