• SCCM 2007 R2 - Создаем коллекции компьютеров 32-bit/64-bit

    В процессе развертывания программного обеспечения через SCCM может возникнуть необходимость создания отдельных коллекций компьютеров в зависимости от битности используемой на них ОС, так как сейчас многие приложения имеют отдельные инсталляционные пакеты для разных платформ. Пример запроса на создание коллекции компьютеров по маске имени (например выбираем только ноутбуки и рабочие станции) и битности ОС для 32-битных систем Windows:

    select

    SMS_R_SYSTEM.ResourceID,

    SMS_R_SYSTEM.ResourceType,

    SMS_R_SYSTEM.Name,

    SMS_R_SYSTEM.SMSUniqueIdentifier,

    SMS_R_SYSTEM.ResourceDomainORWorkgroup,

    SMS_R_SYSTEM.Client

    from SMS_R_System   

    inner join SMS_G_System_COMPUTER_SYSTEM

    on SMS_G_System_COMPUTER_SYSTEM.ResourceId = SMS_R_System.ResourceId     

    where (

    SMS_R_System.NetbiosName like "KOM-%-NB%"

    or SMS_R_System.NetbiosName like "KOM-%-WS%"

    ) 

    and SMS_G_System_COMPUTER_SYSTEM.SystemType = "x86-based PC"

    И соответственно тот же запрос только для 64-битных систем Windows будет отличаться лишь последней строкой: 

    and SMS_G_System_COMPUTER_SYSTEM.SystemType = "x64-based PC"


    Компьютеры под управлением Windows в среднестатистическом рабочем окружении могу иметь три основных типа существования:

    • 32-битная ОС установлена на x86 процессор
    • 64-битная ОС установлена на x64 процессор
    • 32-битная ОС установлена на x64 процессор
      Мы можем наглядно получить информацию о распределении таких типов существования в нашем окружении сформировав на SCCM отчет с запросом:

    select distinct sys.netbios_name0,

    case when pr.addresswidth0 = 64 then '64bit OS'

    when pr.addresswidth0=32 then '32bit OS'

    end as [Operating System Type],

    case when pr.addresswidth0=32 and pr.DataWidth0=64 then '*'

    end as [32-bit OS on x64 processor]

    from v_r_system sys

    join v_gs_processor pr on sys.resourceid=pr.resourceid


      Результат будет выглядеть примерно так:

    image

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

    select

        OS.Caption0,

        case when pr.Is64Bit0=1 then '64-bit'

        when pr.Is64Bit0=0 then '32-bit'

        end as [Processor Type],

        Count(*)

    from

        dbo.v_gs_processor PR Left Outer Join dbo.v_GS_OPERATING_SYSTEM OS on PR.ResourceID = OS.ResourceId

    Group by OS.Caption0, pr.Is64Bit0

    Order by OS.Caption0, pr.Is64Bit0

      Результат:

    image


      Возможно что эта информация будет полезна при планировании перехода с 32-битных систем на 64-битные.
      Источники информации:
  • Развёртывание АСКОН КОМПАС-3D-Viewer v13 (13.0)

    imageПриложение КОМПАС-3D Viewer V13 от компании Аскон предназначено для просмотра и печати документов и шаблонов документов, разработанных в системах КОМПАС-3D/ КОМПАС-3D LT, также с его помощью возможен просмотр и печать документов форматов DXF и DWG. Лицензионное соглашение поставляемое с дистрибутивом текущей версии (13.0) разрешает использование этого вьюера в корпоративной среде.

    Если в организации возникает потребность в централизованном развёртывании этого пакета на определённое количество рабочих станций то вы можете столкнуться с ситуацией когда устанавливаемая новая версия вьюера не производит при установке удаления старых версий, так как это например реализовано в программе установки Adobe Reader. В итоге это может привести к зоопарку разных версий в рамках одного компьютера, то есть фактически получается что на одном компьютере вы будете использовать 2, 3 и более экземпляров ПО что само себе уже противоречит упомянутому лицензионному соглашению. Чтобы избежать этой ситуации, в процессе развертывания новой версии вам потребуется предварительно выполнить удаление всех установленных экземпляров этого ПО. В независимости от способа реализации этой задачи (GPO/SCCM и т.п.) вам может пригодиться пакетный файл содержащий команды последовательного удаления всех ранее установленных версий (вплоть до текущей):

    rem Kompas-3D-Viewer v13 (13.0)

    MsiExec.exe /x {2110889E-9850-4BD6-A3B6-C031B3F656C3} /qn

    rem Kompas-3D-Viewer v12 (12.0.1)

    MsiExec.exe /x {17D7EA7D-DDFA-44FF-A367-12E3D9D95688} /qn

    rem Kompas-3D-Viewer v11 (11.0.1)

    MsiExec.exe /x {4BBE7146-2DE7-4E0B-B6A7-8FCEC2D7DA79} /qn

    rem Kompas-3D-Viewer v11 (11.0)

    MsiExec.exe /x {4F20BA62-58DB-4B58-941C-BC9362339E00} /qn

    rem Kompas-3D-Viewer v9 (9.0.1)

    MsiExec.exe /x {5EA2B7F0-F558-4FF8-9B51-CA8AAA628E93} /qn

  • System Center DPM 2010 QFE Rollup 2 KB2465832 (3.0.7707.0)

    Стал доступен для загрузки накопительный пакет обновлений для DPM 2010 RTM – System Center DPM 2010 QFE Rollup 2 (KB2465832) который изменяет версию DPM до 3.0.7707.00

    Описание: Description of the hotfix rollup package for System Center Data Protection Manager 2010: March, 2011
    URL для скачивания: QFE Rollup Package 2 for System Center Data Protection Manager 2010

    Данный пакет применим ко всем языковым версиям DPM 2010.
    После установки данного обновления перезагрузка DPM сервера не потребуется. Обновление клиентов DPM можно сделать как с консоли DPM так и вручную (обе процедуры описаны в разделе “Installation instructions” по первой ссылке). После обновления клиентов DPM перезагрузка защищаемых серверов не потребуется.

    Для установки QFE Rollup 2 на DPM 2010 работающий на базе Windows Server 2008 R2 необходимо обеспечить наличие в системе установленного обновления KB2223201 - Event ID 82 may be logged in the System log after you extend the protected dynamic volume on a Windows 7-based or Windows Server 2008 R2-based computer. Установка этого обновления потребует перезапуска сервера DPM. Если вы уже успели установить SP1 для Windows Server 2008 R2, то предустановка этого обновления не потребуется так как оно входит в состав SP1. Полный список обновлений, входящих в состав SP1 для Windows Server 2008 R2 можно найти по ссылке Documentation for Windows 7 and Windows Server 2008 R2 Service Pack 1 (KB976932) в документе “Hotfixes and Security Updates included in Windows 7 and Windows Server 2008 R2 Service Pack 1.xls”.

    Для установки QFE Rollup 2 на DPM 2010 работающий на базе Windows Server 2008 необходимо обеспечить наличие в системе установленного обновления KB2279787 - Event ID 82 may be recorded in the System log after you extend the protected dynamic volume on a computer that is running Windows Vista or Windows Server 2008

    Стоит отметить, что с недавнего времени список продуктов обновляемых через WSUS расширился значением “Microsoft System Center DPM 2010” и это подразумевает то, что теперь выходящие накопительные пакеты обновлений будут будут доступны через службу WSUS. По крайней мере, после включения этого продукта, на моём сервере WSUS появился DPM 2010 QFE Rollup 1.

  • DPM 2010 - Резервное копирование БД Exchange Server 2010 в группе DAG

    imageРассмотрим использование DPM 2010 в качестве системы резервного копирования баз данных роли Mailbox Exchange Server 2010 на конкретном примере. В качестве исходных данных будем считать, что мы имеем два сервера Exchange Server 2010 с ролью Mailbox объединённых в группу Database Availability Group (DAG), на которых расположено шесть баз данных почтовых ящиков. Параллельно поставим перед собой задачу распределить нагрузку по двум серверам Mailbox. Читать далее...

  • SCCM 2007 R2 – развёртывание Java Runtime Environment (JRE)

    Просматривая отчет SCCM ‘Count of all instances of software registered with Add or Remove Programs’ обратил внимание на огромный букет разных версий Java Runtime Environment (JRE), установленных на разных клиентских системах. Выяснилось, что на некоторых клиентах установлено по несколько экземпляров JRE, как разных веток, так и их подверсий. Погуглив, почитав гневные выплески в адрес разработчиков и поигравшись с дистрибутивами JRE, стало понятно, что развернуть актуальную версию JRE параллельно удалив при этом все старые версии – задача не совсем тривиальная. Дополнительно нужно решить проблему отключения механизма обновления, который приводит в замешательство пользователей, периодически выбрасывая окно UAC при попытке произвести авто-обновление JRE.

    Для начала нам необходимо скачать последнюю версию (на момент написания заметки это версия 6 Update 23) offline-инсталлятора с адреса Java Runtime Environment Download

    Итак, у нас имеются два файла:
    jre-6u23-windows-i586.exe – для 32-битных версий Windows
    jre-6u23-windows-x64.exe – для 64-битных версий Windows

    Для развёртывания через SCCM, так же как и через другие механизмы типа GPO, нам понадобиться файлы MSI инсталлятора. О том, как их извлечь описано в статье How do I deploy Java using Active Directory across a network?
    Запускаем полученный *.exe дистрибутив (сам процесс установки при этом выполнять не нужно)…

    image

    …переходим в служебный каталог, куда после запуска дистрибутив JRE распаковывает свои файлы (в зависимости от используемой ОС каталог может различаться):

    для Windows Vista/7 - C:Users<user>AppDataLocalLowSunJavajre1.6.0_23
    для Windows XP - C:Documents and Settings<user>Local SettingsApplication DataSunJava jre1.6.0_23

    Копируем из этого каталога файлы jre1.6.0_23.msi и Data1.cab и после этого запущенное приложение программы установки JRE можно закрывать (оно нам больше не понадобиться).

    Так как *.cab файл в составе дистрибутива имеет цифровую подпись, перед началом развёртывания необходимо удостовериться в том, что на целевых клиентских системах обновлено хранилище корневых сертификатов. В противном случае, мы можем столкнуться с проблемой, описанной в заметке SCCM – Обновление корневых сертификатов.

    Файлы необходимые для установки новой версии мы получили, но как быть с множеством уже установленных экземпляров старых версий? Для того чтобы произвести их удаление перед установкой новой версии создадим отдельный пакетный файл jre1.6.0_23_UninstallAll.bat следующего содержания:

    rem Java(TM) 6 Update 23
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216023FF} /qn
    rem Java(TM) 6 Update 23 (64-bit)
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F86416023FF} /qn
    rem Java(TM) 6 Update 22
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216022FF} /qn
    rem Java(TM) 6 Update 21
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216021FF} /qn
    rem Java(TM) 6 Update 20
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216020FF} /qn
    rem Java(TM) 6 Update 19
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216019FF} /qn
    rem Java(TM) 6 Update 18
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216018F0} /qn
    rem Java(TM) 6 Update 17
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216017FF} /qn
    rem Java(TM) 6 Update 17 (64-bit)
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F86416017FF} /qn
    rem Java(TM) 6 Update 16
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216016FF} /qn
    rem Java(TM) 6 Update 15
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216015FF} /qn
    rem Java(TM) 6 Update 14
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216014FF} /qn
    rem Java(TM) 6 Update 13
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216013FF} /qn
    rem Java(TM) 6 Update 12
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216012FF} /qn
    rem Java(TM) 6 Update 11
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216011FF} /qn
    rem Java(TM) 6 Update 10
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216010FF} /qn

    rem =====================================
    rem Java(TM) 6 Update 7
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160070} /qn
    rem Java(TM) 6 Update 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160060} /qn
    rem Java(TM) 6 Update 5
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160050} /qn
    rem Java(TM) 6 Update 4
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160040} /qn
    rem Java(TM) 6 Update 3
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160030} /qn
    rem Java(TM) 6 Update 2
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160020} /qn
    rem Java(TM) SE Runtime Environment 6 Update 1
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160010} /qn
    rem Java(TM) SE Runtime Environment 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160000} /qn

    rem =====================================
    rem JRE Runtime Environment 5.0 Update 21
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150210} /qn
    rem JRE Runtime Environment 5.0 Update 20
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150200} /qn
    rem JRE Runtime Environment 5.0 Update 19
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150190} /qn
    rem JRE Runtime Environment 5.0 Update 18
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150180} /qn
    rem JRE Runtime Environment 5.0 Update 17
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150170} /qn
    rem JRE Runtime Environment 5.0 Update 16
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150160} /qn
    rem J2SE Runtime Environment 5.0 Update 15
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150150} /qn
    rem JRE Runtime Environment 5.0 Update 14
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150140} /qn
    rem JRE Runtime Environment 5.0 Update 13
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150130} /qn
    rem J2SE Runtime Environment 5.0 Update 12
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150120} /qn
    rem JRE Runtime Environment 5.0 Update 11
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150110} /qn
    rem JRE Runtime Environment 5.0 Update 10
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150100} /qn
    rem JRE Runtime Environment 5.0 Update 9
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150090} /qn
    rem JRE Runtime Environment 5.0 Update 8
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150080} /qn
    rem JRE Runtime Environment 5.0 Update 7
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150070} /qn
    rem J2SE Runtime Environment 5.0 Update 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150060} /qn
    rem JRE Runtime Environment 5.0 Update 5
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150050} /qn
    rem JRE Runtime Environment 5.0 Update 4
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150040} /qn
    rem J2SE Runtime Environment 5.0 Update 3
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150030} /qn
    rem J2SE Runtime Environment 5.0 Update 2
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150020} /qn
    rem JRE Runtime Environment 5.0 Update 1
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150010} /qn
    rem JRE Runtime Environment 5.0
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150000} /qn

    rem =====================================
    rem Java 2 Runtime Environment, SE v1.4.2_19
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142190} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_18
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142180} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_17
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142170} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_16
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142160} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_15
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142150} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_14
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142140} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_13
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142130} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_12
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142120} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_11
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142110} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_10
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142100} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_09
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142090} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_08
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142080} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_07
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142070} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_06
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142060} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_05
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142050} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_04
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142040} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_03
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142030} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_02
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142020} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_01
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142010} /qn
    rem Java 2 Runtime Environment, SE v1.4.2
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142000} /qn

    rem =====================================
    rem Java 2 Runtime Environment Standard Edition v1.3.1_25
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_25Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_24
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_24Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_23
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_23Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_22
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_22Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_21
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_21Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_20
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_20Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_19
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_19Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_18
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_18Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_17
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_17Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_16
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_16Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_15
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_15Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_14
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_14Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_13
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_13Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_12
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_12Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_11
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_11Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_10
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_10Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_09
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_09Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_08
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_08Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_07
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_07Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_06
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_06Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_05
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_05Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_04
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_04Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_03
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_03Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_02
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_02Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_01
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_01Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3Uninst.isu" -a

    rem =====================================
    rem Java 2 Runtime Environment Standard Edition v1.2
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.2Uninst.isu" -a

    rem =====================================
    rem Java Auto Updater 2.0.2.1 / 2.0.2.4
    MsiExec.exe /x {4A03706F-666A-4037-7777-5F2748764D10} /qn

    В начале файла удаление уже установленного экземпляра текущей версии фигурирует не случайно. Эксперименты показали что если текущая версия была ранее установлена в ручную то выкорчевать из неё логику механизма авто-обновления сложней чем просто удалить и установить заново с нужными параметрами. В конце файла строка удаления Java Auto Updater добавлена больше для перестраховки, так как, при удалении JRE в штатном режиме, этот модуль удаляется тоже.

    Для информации: если нет желания удалять текущую версию JRE с установленным модулем авто-обновления, механизм авто-обновления можно попытаться отключить в реестре:

    [HKEY_LOCAL_MACHINESoftwareJavaSoftJava UpdatePolicy]
    "EnableJavaUpdate"=dword:00000000
    "EnableAutoUpdateCheck"=dword:00000000

    Разместив полученные из дистрибутива файлы jre1.6.0_23.msi , Data1.cab и пакетный файл удаления старых версий jre1.6.0_23_UninstallAll.bat в одном сетевом каталоге, в SCCM создаем пакет распространения JRE.

    image

    Пакет будет иметь две основные программы, которые мы будем использовать. Первая программа «Uninstall all old versions» будет запускать созданный нами пакетный файл для удаления старых версий

    image

    Вторая программа «Per-system unattended» будет запускать процедуру установки новой версии с необходимыми нам ключами, отвечающими за отключение механизма авто-обновления JRE

    image

    Команда установки может быть следующей:

    msiexec /i jre1.6.0_23.msi /qn REBOOT=Suppress JAVAUPDATE=0 AUTOUPDATECHECK=0

    ключи ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 можно не использовать, так как, начиная с версии JRE 6 update 10, они считаются устаревшими.

    Обратите внимание на то, что текущая версия JRE имеет два разных дистрибутива для платформ 32 и 64 бита, поэтому на закладке предварительных требований для запуска программы установки необходимо ограничить список соответствующих платформ, на которые может быть установлен данный пакет.

    image

    После того, как на SCCM пакет распространения готов, создадим коллекцию компьютеров на которую в последствие будет назначено объявление развёртывания этого пакета, с членством основанном на SQL запросе

    image

    Запрос должен выбирать из БД SCCM все компьютеры, у которых в составе установленных приложений присутствуют старые версии JRE разных веток, например, так:

    select

    SMS_R_SYSTEM.ResourceID,

    SMS_R_SYSTEM.ResourceType,

    SMS_R_SYSTEM.Name,

    SMS_R_SYSTEM.SMSUniqueIdentifier,

    SMS_R_SYSTEM.ResourceDomainORWorkgroup,

    SMS_R_SYSTEM.Client

    from SMS_R_System

    inner join SMS_G_System_ADD_REMOVE_PROGRAMS

    on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId

    where  

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java(TM) 6%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java(TM) SE Runtime Environment 6%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'J2SE Runtime Environment 5%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment, SE v1.4%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment Standard Edition v1.3%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment Standard Edition v1.2%'

    После того как коллекция будет обновлена и заполнена компьютерами, создаем последовательность задач (Task Sequences) состоящую из двух действий. Первым действием будет запуск программы выполняющей пакетный файл удаления всех старых версий:

    image

    При этом в опциях данного шага необходимо обозначить то, что в случае возврата ошибок, последовательность будет продолжать выполняться. В ходе выполнения пакетного файла для тех продуктов, которые не установлены, будет возвращаться код ошибки инсталлятора MSI 1605, что может приводить к прерыванию последовательности. По этой же причине процедуру установки пакета предлагается выполнять не в виде обычного объявления на коллекцию, а через выполнение последовательности задач.

    image

    Вторым действием последовательности будет уже сама установка новой версии с необходимыми нам параметрами

    image

    После этого нам остаётся только объявить последовательность задач на созданную ранее коллекцию компьютеров и следить за ходом развёртывания на консоли SCCM

    image

    Дополнительные источники информации:

    Java SE Online Documentation - Java Runtime Environment Configuration
    Java SE Online Documentation - JRE Installer Options
    AppDeploy Package Knowledgebase - Java Runtime Environment
    camie.dyndns.org - J2SE & JRE Mass Uninstallation Script (Bat)
    Brad's JumpBag Blog - Java 6 Update 22 partial installs

  • SCCM - Обновление корневых сертификатов

    При попытке развернуть последнюю версию JRE на Windows 7 столкнулся с ситуацией, когда программа установки завершается с ошибкой:

    Имя журнала: Application
    Источник: MsiInstaller
    Дата: 26.01.2011 8:37:12
    Код события: 11330
    Категория задачи: Отсутствует
    Уровень: Ошибка
    Ключевые слова: Классический
    Пользователь: mydomuser
    Компьютер: WS001.mydom.com
    Описание:
    Product: Java(TM) 6 Update 23 -- Error 1330.A file that is required cannot be installed because the cabinet file \sccm-serverSourcesJRE_1.6.0_23x86Data1.cab has an invalid digital signature. This may indicate that the cabinet file is corrupt. Error 266 was returned by WinVerifyTrust.

    Проблема в данном случае заключается в отсутствии доверия к корневому сертификату в цепочке корневых сертификатов того сертификата, с помощью которого подписан *.cab файл в составе дистрибутива.

    При этом на компьютерах с Windows XP данной проблемы нет, так как эти ОС получают с WSUS соответствующее обновление - Update for Root Certificates [October 2010] (KB931125)

    clip_image001

    Для того чтобы обеспечить обновление корневых сертификатов на всех клиентских системах Windows можно скачать файл rootsupd.exe и форсированного распространить его. В моём случае, для этой цели я воспользовался SCCM, создав новый пакет распространения:

    clip_image002

    Для пакета сделана соответствующая программа, которая в скрытом режиме будет запускать исполняемый файл rootsupd.exe.

    clip_image001[4]

    После распространения созданного пакета на все точки распространения SCCM и объявления на коллекцию клиентских ПК, проблема с развёртыванием JRE будет исчерпана.

    Для тех, у кого нет возможности использовать SCCM, распространить это обновление можно и другими доступными способами, например через GPO.

  • SCCM 2007 R2 – Использование Remote Tools для клиентов в рабочей группе

    imageЭта заметка о том, как организовать возможность механизма удалённого управления SCCM Remote Tools для клиентов не входящих в домен (являющихся членами рабочей группы). Всё нижеописанное относиться только к Смешанному режиму работы сайта SCCM (Mixed mode).

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

    Нормальное взаимодействие не доменного клиента SCCM и доменного сервера SCCM во многом зависит от корректной работы механизмов разрешения имён. В интернете можно встретить несколько способов организации разрешения имён для этой задачи. Мы пойдём по самому короткому и надёжному пути,  без всяких танцев с бубном вокруг серверов WINS, ковыряния конфигурационных файлов LMHOSTS и т.п. – то есть будем использовать DNS.. как звучит в гайде“We recommend DNS for workgroup clients”

    Для начала мы включим публикацию точки распространения нашего сайта SCCM в DNS. Сделать это можно в консоли SCCM, открыв свойства сайта на закладке “Advanced

    image

    После включения этой опции мы должны удостовериться в том, что SCCM сервер действительно создал в DNS в нашей основной зоне прямого просмотра в контейнере _tcp необходимую запись Service location resource record (SRV RR). В нашем примере это будет зона mydom.com

    image

    Если же по какой то причине сервисная учетная запись так и не появилась, мы можем создать её в ручную. Процесс создания такой записи описан в статье System Center TechCenter – How to Manually Publish the Default Management Point to DNS.

    Следующим шагом будет установка специальной серверной роли SCCM Server Locator Point (SLP), которая в нашем случае будет нужна для того чтобы не доменные клиенты могли общаться c нашим сервером SCCM внутри домена посредствам протокола HTTP.

    Процедура добавления роли  пошагово описана в статье System Center TechCenter – How to Create a Server Locator Point in Configuration Manager. В консоли SCCM развернём дерево настроек нашего сайта (Site Database > Site Management > SITENAME > Site Settings), перейдём в раздел Site Systems и в меню действий выберем пункт New Roles

    image

    Далее в открывшемся мастере добавления ролей отметим интересующую нас роль – SLP, остальные настройки мастера в большинстве случаев можно оставить неизменными.

    image

    image

    После того как мастер установки роли успешно завершит свою работу, мы можем проверить доступность Application-части добавленной роли, - для этого откроем в браузере специально сформированный URL формата:

    http://<SLPServerName>/sms_slp/slp.dll?site&sc=<SiteName>

    В нашем примере эта ссылка будет выглядеть так:
    http://kom-sccm01.mydom.com/sms_slp/slp.dll?site&sc=KOM

    Как минимум, мы не должны получать никаких ошибок веб-сервера, запросов авторизации и т.п. вещей. В качестве ответа SLP мы должны получить XML примерно такого содержания:

       <?xml version=”1.0” ?>

       <SiteAssignment>

         <Site Sitecode=”KOM BuildNumber=”6487 Version=”4.00.6487.2000 DefaultMP=”KOM-SCCM01.MYDOM.COM”>

            <Capabilities SchemaVersion=”1.0” />

      </Site>

    </SiteAssignment>

     

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

    image

    После этого с клиента проверяем доступность SCCM сервера по короткому имени (без указания DNS суффикса) и по полному FQDN имени:

    Ping KOM-SCCM01
    Ping KOM-SCCM01.mydom.com

    Затем регистрируем в DNS имя нашего не доменного клиента и затем проверяем его доступность по имени с SCCM сервера.

    Следующим шагом копируем дистрибутив SCCM клиента из подкаталога Client каталога установки серверных компонент SCCM на наш не доменный компьютер, например в папку «C:SCCMClientDistr»:

    image

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

    Открываем командную строку, переходим в каталог с указанными файлами и выполняем запуск программы установки с передачей ей всех необходимых параметров командой:

    CCMSetup.exe /Source:C:SCCMClientDistr” CCMHTTPPORT=80  SMSSITECODE=KOM” SMSMP=KOM-SCCM01.mydom.com” SMSSLP=KOM-SCCM01.mydom.com” DNSSUFFIX=mydom.com”

    Примечание: Полный список используемых ключей и их описания можно найти по ссылке на первоисточник в конце заметки. 

    Дожидаемся когда в системном журнале «Приложение» будет зафиксировано событие успешного окончания установки клиента:

    image

    Проверяем доступность дополнительных апплетов SCCM в Панели управления, которые должны появиться после окончания установки клиента:

    image

    После этого переходим на консоль SCCM, убеждаемся в том, что наш клиент там появился, и выполняем для него процедуру одобрения (Approve)

    image

    Всё теперь наш клиент «в строю». Для того чтобы успешно работал механизм Remote Tools в составе клиента SCCM, на клиентской системе в свойствах проводника необходимо отключить Использование простого общего доступа к файлам (simple file sharing)

    image

    После этого мы сможем подключаться к нашему не доменному клиенту через Remote Tools, указывая при запросе авторизации локальные учетные данные этого клиента (без указания имени домена):

    image

    И ещё один момент, если мы планируем использовать распространение ПО на таких клиентов , то на сервере SCCM обязательно должна быть сконфигурирована учетная запись Network Access Account, в противном случае не доменные компьютеры не смогут получить доступ к контенту точки распространения (distribution point).

    Дополнительные источники информации:

    System Center TechCenter Configuration Manager 2007 General Supported Configurations (Computers in Workgroups)

    System Center TechCenter - How to Install Configuration Manager Clients on Workgroup Computers

    System Center TechCenter - How to Specify the Server Locator Point for Configuration Manager Client Computers

    System Center TechCenter - About Configuration Manager Client Installation Properties

  • System Center DPM 2010 QFE Rollup KB2250444 (3.0.7706.00)

    imageВ первой половине Ноября появился пакет исправлений для DPM 2010 RTM – System Center DPM 2010 QFE Rollup (KB2250444) который изменяет версию DPM до 3.0.7706.00

    Описание: Description of the hotfix rollup package for System Center Data Protection Manager 2010: November 10, 2010
    URL для скачивания: System Center Data Protection Manager 2010 QFE Rollup

    После установки требуется перезагрузка DPM сервера и обновление всех клиентов DPM. Сделать обновление клиентов DPM можно как с консоли DPM так и вручную (обе процедуры описаны в вышеперечисленных ссылках). После обновления клиентов DPM перезагрузка не потребуется.

    Наконец то исправлена ошибка, с которой неоднократно приходилось сталкиваться - когда при создании Protection Group мы пытались изменить предлагаемые по умолчанию размеры партиций Replica volume и Recovery point volume – в некоторых случаях из этого ничего не выходило :)

  • SCOM 2007 R2 – Пакетный перевод агентов в Maintenance Mode

    imageВ окружении с большим количеством агентов мониторинга SCOM 2007 R2 массовый перевод этих агентов  в режим обслуживания (Maintenance Mode) через UI консоль может стать весьма хлопотным занятием. На помощь в таком случае как всегда приходит Operations Manager Shell.

    Например, для того чтобы перевести в Maintenance Mode все сервера в имени которых встречается “SQL”, с текущего момента сроком на 2 часа в Operations Manager Shell можно выполнить следующий нехитрый скрипт:

    $Time1 = [DateTime]::Now

    $Time2 = $Time1.AddMinutes(120)

    $Agents  = Get-Agent | Where {$_.Name –match "SQL"}

    $Agents | foreach {New-MaintenanceWindow -StartTime $Time1 -EndTime $Time2 -Reason "PlannedOther" -Comment "Maintenance Mode Window" -MonitoringObject $_.HostComputer}

    Здесь вместо функции AddMinutes() можно также использовать AddHours() и AddDays()

    Или другой пример, когда необходимо указать конкретный диапазон дат:

    [DateTime] $Time1 = "11/23/2010"

    $Time1 = $Time1.ToUniversalTime()

    [DateTime] $Time2 = "11/28/2010"

    $Time2 = $Time2.ToUniversalTime()

    $Agents  = Get-Agent | Where {$_.Name –match "SQL"}

    $Agents | foreach {New-MaintenanceWindow -StartTime $Time1 -EndTime $Time2 -Reason "PlannedHardwareMaintenance" -Comment "Hardware Maintenance" -MonitoringObject $_.HostComputer}

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

    %SYSTEMROOT%system32WindowsPowerShellv1.0powershell.exe C:MaintenanceModeStartMaintenanceModeWindow.ps1

    Так же для того чтобы скрипт успешно отработал при таком вызове из планировщика задач, в начало скрипта следует добавить строки инициализации командлетов Operations Manager Shell и вызов подключения к корневому серверу управления SCOM (RMS):

    $RMSServer = 'RMSServerName'

    Add-PSSnapin "Microsoft.EnterpriseManagement.OperationsManager.Client";

    Set-Location "OperationsManagerMonitoring::";

    New-ManagementGroupConnection -ConnectionString:$RMSServer;

    Set-Location $RMSServer;

    Дополнительные источники информации:

    System Center TechCenter - How to Put a Monitored Object into Maintenance Mode in Operations Manager 2007

    System Center TechCenter- Operations Manager 2007 R2 Cmdlets - New-MaintenanceWindow

    Collection of Maintenance Mode Scripts, Utilities and MPs for Opsmgr and Essentials 2007 (Updated for SCOM 2007 R2)

    System Center Operations Manager Forums > Extensibility > Setting all entities to maintenance based on a particular class

  • SCOM 2007 R2 – Изменение статуса ManuallyInstalled для агентов

    В некоторых случаях может возникнуть ситуация, когда по каким-то причинам произведена ручная установка агентов SCOM на ряд компьютеров. Для таких агентов в UI консоли недоступны опции смены основного сервера управления (Change Primary Management Server), восстановления (Repair) и удаления (Uninstall). Помимо этого после применения новых кумулятивных обновлений (CU) такие агенты не будут переходить в режим принудительного обновления, что опять же потребует их обновления «в рукопашную». Получить список таких агентов можно как в UI консоли, так и в  Operations Manager Shell:

     

    Get-Agent | where {$_.ManuallyInstalled -match ‘true’} | ft name,ManuallyInstalled

     

    Для повышения централизованной управляемости нам потребуется изменить статус ручной установки для таких агентов. Через UI консоль это сделать невозможно by design. Через Operations Manager Shell у нас в данном случае также не получится изменить данное свойство, так как оно установлено как ReadOnly. Для решения данной задачи можно воспользоваться советом из блога Кевина Холмана: Kevin Holman's OpsMgr Blog - How to get your agents back to "Remotely Manageable" in OpsMgr 2007 R2

     

    Для того чтобы вывести список агентов установленных вручную, подключимся к базе данных «OperationsManager» и выполним запрос:

     

    SELECT bme.DisplayName FROM MT_HealthService mths

    INNER JOIN BaseManagedEntity bme ON bme.BaseManagedEntityId = mths.BaseManagedEntityId

    WHERE IsManuallyInstalled = 1

     

    Для того чтобы изменить статус всех вручную установленных агентов, выполним запрос:

     

    UPDATE MT_HealthService

    SET IsManuallyInstalled=0

    WHERE IsManuallyInstalled=1

     

    Если же мы не хотим менять статус для всех агентов, а лишь для одного какого то конкретного агента, выполним запрос:

     

    UPDATE MT_HealthService

    SET IsManuallyInstalled=0

    WHERE IsManuallyInstalled=1

    AND BaseManagedEntityId IN

    (SELECT BaseManagedEntityID FROM BaseManagedEntity

    WHERE BaseManagedTypeId = 'AB4C891F-3359-3FB6-0704-075FBFE36710'

    AND DisplayName = 'agentname.domain.com')

     

    После этого, в UI консоли, для измененных агентов станут доступными вышеописанные опции управления.

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