SCCM OSD: Интеллектуальная разметка диска
- Просмотров: 4832
- Комментариев: 0
- Подписаться на обновления
- Печатать
- Поделиться
В этой записи я расскажу как можно организовать умную разметку диска при развертывании ОС средствами SCCM. Но сначала немного предыстории.
Изначально у меня был шаг в Task Sequence, который отрезал 60Gb для диска C, остальное пространство отводилось для диска D. Однажды мне пожаловались на постоянное падение Task Sequence на рабочей станции. Разбор полетов показал, что падает на шаге разметки диска... Падает потому, что диск 40Gb! Отрезать 60 от 40 проблематично...
Чтобы не плодить Task Sequence (о этой проблеме я писал в одной из предыдущих заметок SCCM OSD: Перестаем плодить Task Sequence) создать 2 шага Format and Partition Disk, которые срабатывают в зависимости от объема жесткого диска и размечают на 2 раздела (если диск больше 80Gb) или 1 раздел (если меньше 80Gb).
Раз уж начал тему разметки диска, то опишу сразу реализацию Task Sequence, который делает разметку диска (учитывая объем диска) только на тех системах, где он не размечен (новые рабочие станции). А на остальных этот шаг пропускается (т.е. затирается информация на диске C и туда разворачивается ОС).
Я буду описывать только шаги, которые касаются исключительно разметки диска. За эту операцию у нас будет отвечать 3 шага: первый анализирует диск на наличие разделов (если таковые есть, то создается переменная с именем TSVDiskPart), второй шаг выполняется если переменная TSVDiskPart отсутствует и диск меньше 80Gb (создается один раздел на полный объем диска), третий выполняется если переменная TSVDiskPart отсутствует и диск больше 80Gb (создается 2 раздела: 60Gb и остальной объем соответственно).
Первый шаг.
В редакторе Task Sequence выбираем Add -> General -> Set Task Sequence Variable.
В Name вводим что-то вроде "Check for existing partitions", в Task Sequence Variable - "TSVDiskPart", в Value - "Partitions Exists" (на самом деле здесь абсолютно не принципиально само значение, принципиально - его присутствие, если не задать никакого значения - переменная не будет создана).
Переходим на вкладку Options, здесь добавляем условие Add Conditions -> WMI Query. В качестве WMI Namespace указываем "root\cimv2", в поле WQL Query: Select * from Win32_DiskPartition
и нажимаем ОК.
Второй шаг.
В редакторе Task Sequence выбираем Add -> Disk -> Format and Partition Disk.
На вкладке Properties настраиваем все на создание одного раздела, что занимает 100% диска.
На вкладке Options добавляем условие: Add Condition -> If Statement и выбираем вариант "All conditions" (если выполняются все условия)
Отсутствие переменной (диск не размечен): Add Condition -> Task Sequence Variable. Заполняем поля, в Variable вписываем "TSVDiskPart", в Condition выбираем "not exists", затем нажимаем ОК.
Проверяем размер диска, чтоб был меньше 80Gb: Add Condition -> WMI Query. Вписываем в WMI Namespace значение "root\cimv2", в поле WQL Query: SELECT * FROM Win32_DiskDrive WHERE Index = "0" AND Size <= 85899345920
и нажимаем ОК.
85899345920 - это размер диска в байтах, здесь не совсем корректный пример и лучше брать значение 75161927680, что соответствует 70Gb, т.к. реальный объем диска по факту меньше чем 80Gb.
Третий шаг.
Делаем все тоже, что и для второго, но разметку делаем на 2 раздела, в качестве WQL Query:SELECT * FROM Win32_DiskDrive WHERE Index = "0" AND Size > 85899345920
Вот и все... теперь наш Task Sequence действует интеллектуально!