Поиск и устранение неисправностей оценок приложения в SCCM2012

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

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

                         _________________
                         |               |
                         | load balancer |
                         |_______________|
                      /           |       \
                     /            |        \
                    /             |         \
            __________         __________    \ __________
            |        |         |        |      |        |
            |   web  |         |   web  |      |   web  |     etc...
            | server |         | server |      | server |
            |________|         |________|      |________|

Теперь, если это - более динамический сайт, который включает чтение и запись в базу данных и пользователей, взаимодействующих друг с другом, это просто немного более сложно. В основном Вы разделили бы все задачи единственного сервера в несколько серверов для распределения загрузки. Например, у Вас был бы один (или несколько - использование репликации) серверами баз данных, которые предоставят Ваши веб-серверы фронтэнда содержание. Затем у Вас может быть несколько веб-серверов, которые служат фактическому html/php/whatever, но получают их содержание от сервера (серверов) базы данных. Все еще с помощью подсистемы балансировки нагрузки для разделения трафика между несколькими веб-серверами, поэтому даже на динамическом сайте, все видели бы то же самое, потому что все веб-серверы получат свои данные из той же среды базы данных. Теперь для масштабирования серверов баз данных а именно, в основном у Вас есть один "основной" сервер, где все Ваши записи происходят, затем это копирует, это - изменения вниз в наборе "ведомых" серверов, где Вы делаете все свои чтения. Обычно любой сайт делает намного больше чтений базы данных, чем записи, таким образом, это работает и позволяет Вам распределить, они перечитывают по стольким ведомым серверам, сколько Вам нужно.

                         _________________
                         |               |
                         | load balancer |
                         |_______________|
                      /           |       \
                     /            |        \
                    /             |         \
            __________         __________    \ __________
            |        |         |        |      |        |
            |   web  |         |   web  |      |   web  |     etc...
            | server |         | server |      | server |
            |________|         |________|      |________|

                 ^                 ^               ^
     each web server writes to the master and reads from the slaves


                         _________________
                         |     Master    |
                         |  (for writes) |
                         |_______________|
                      /           |       \
                     /            |        \
                    /             |         \
            __________         __________    \ __________
            | slave  |         | slave  |      | slave  |
            |(for    |         |(for    |      |(for    |     etc...
            | reads) |         | reads) |      | reads) |
            |________|         |________|      |________|

Теперь ответить на Ваш второй вопрос, видеть, когда необходимо переместиться в большее количество серверов, довольно просты. Существует несколько разных вещей, которые могут быть истощены на сервере - Доступные циклы ЦП, Пространство памяти, Дисковое пространство / пропускная способность и Сетевая пропускная способность. Существуют инструменты для рассмотрения каждого из них. Принятием этого является основанная на Unix ОС, можно использовать "вершину" для контроля использования ЦП и использования памяти, "df-h" для наблюдения использования диска и "iftop" для контроля использования сети. Если какой-либо из них постоянно работает против верхнего края того, что Вы имеете в наличии, и Вы замечаете замедление в использовании Вашего веб-сайта, пора получить другой сервер (серверы). И, на основе того, что Вы видите, у Вас заканчивается, Вы будете знать как к спецификации Ваши новые серверы лучше обрабатывать те загрузки.


Надежда, которая помогает!

4
задан 17 March 2014 в 22:43
6 ответов

OK, this will be a long post, but there's good stuff here.

First off, the GUIDs for installed software are located in the following locations...

For 32-bit Windows, and 64-bit software on 64-bit Windows:
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

For 32-bit software on 64-bit Windows:
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

The problem you are running into is that the GUID string is incorrect. The MSI you downloaded from Adobe is the US English version, hence the 1033 in the 3rd part of the GUID string (1033 is the ANSI code page for US keyboards).

The EXE installer, however, is the MUI version, which has a GUID of {AC76BA86-7AD7-FFFF-7B44-AB0000000001} -- note the FFFF in place of the 1033, which means it's multilanguage.

In your detection method, you need to add an OR clause so it will recognize either GUID as a valid install.

Two gotchas you should also be aware of:

1) You should specify the version number in your detection method. All versions of Reader 11 have the same GUID (i.e. 11.0.1 is the same as 11.0.7) so it will cause your detection method to return a false positive if users are on an older version.

2) If you care about security patches for Reader, then you should know that Adobe releases their patches only for the MUI version. You cannot "upgrade" from, say 11.0.1 to 11.0.7 with their MSIs without doing an uninstall/reinstall of the whole product. If you try, it will just tell you the product is already installed (because the GUID is the same).

Here is the correct way to manage Adobe Reader with SCCM: В вашем приложении требуются два типа развертывания.

1) Настройте MSI 11.0.0 так же, как у вас уже есть (убедитесь, что для метода обнаружения указан номер версии 11.0.00 - не используйте просто GUID) и сохраните и закройте его.

2) Вернитесь и добавьте другой тип развертывания. На этот раз выберите Script Installer в качестве типа (SCCM не обрабатывает файлы MSP изначально). Укажите его на свой файл MSP и используйте msiexec / update (вместо обычного msiexec / i) в качестве командной строки. Для метода обнаружения используйте тот же GUID, но 11.0.07 (или любой другой) в качестве версии. Укажите первый тип развертывания в качестве зависимости. Затем убедитесь, что патч имеет более высокий приоритет в списке. Теперь сохраните и закройте его снова.

Теперь, когда клиент, у которого не установлен считыватель, запрашивает приложение, оба будут установлены. Если у человека уже установлена ​​версия EXE, она будет исправлена. Если он уже исправлен, он будет отображаться как уже установленный.

7
ответ дан 3 December 2019 в 02:58

Итак, после небольшого исследования и осознания того, что именно Adobe Flash player меня заводит, я сформировал возможную гипотезу . Насколько я могу судить, SCCM выглядит в следующем месте WMI:

Namespace: root\CCM\CIModels
Class: CCM_MSIProduct

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

] Я получил это местоположение из «средства мониторинга развертывания», которое вы можете получить в System Center 2012 Configuration Manager Toolkit . Если вы посмотрите в область развертываний и вкладку «Применение», вы можете посмотреть на DiscoverySourceXML, чтобы увидеть, что вернуло обнаружение.

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

Мне действительно нужен SCCM-разработчик, чтобы это увидеть и исправить.


Extra Stuff

Скрипт Powershell для перечисления Объекты WMI:

Get-WmiObject -Namespace root\ccm\CIModels -Class CCM_MSIProduct | Sort-Object ProductName |Format-Table ProductName,ProductCode,ProductVersion
1
ответ дан 3 December 2019 в 02:58

Где я могу увидеть, что запрашивает метод обнаружения и что он возвращает?

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

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


При выполнении обнаружения "Установщик Windows" где система ищет этот GUID?

Если мое чтение MSDN верно, MSI регистрирует ProductCode в HKLM \ Software \ Classes \ Installer \ Products . Разумным предположением является то, что обнаружение приложений проверяет это местоположение, и вы снова можете подтвердить это с помощью ProcMon .



Что касается вашей проблемы, когда исполняемый установщик Adobe Reader нарушает вашу логику обнаружения, я провел небольшое тестирование в моя «лаборатория» (т.е. моя рабочая станция) и смогла воспроизвести вашу проблему.

Я думаю, что все исполняемые файлы Adobe Reader распаковывают и запускают установщик MSI.

Adobe Reader Executable Contents

Если вы посмотрите на содержимое setup.ini , то увидите, что все, что выполняет исполняемый файл, - это запускает установщик MSI:

[Startup]
RequireOS=Windows 2000
RequireMSI=3.0
RequireIE=6.0.2600.0

[Product]
msi=AcroRead.msi

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

Из исполняемого установщика:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\68AB67CA7DA73301B744BA0000000010]
"ProductName"="Adobe Reader XI (11.0.06)"
"PackageCode"="08610D4D4ABC0E74BB0257B5EDD58107"

Из установщика MSI:

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\68AB67CA7DA73301B744BA0000000010]
"ProductName"="Adobe Reader XI (11.0.06)"
"PackageCode"="26A6583616073E04583DBCA6F0289EEB"

PackageCode ] отличается. Источники установки также должны отличаться.

Из загруженного пользователем исполняемого установщика:

C:\ProgramData\Adobe\Setup\{AC76BA86-7AD7-1033-7B44-AB0000000001}\

Из установщика MSI, развернутого SCCM:

C:\Windows\ccmcache\6f\

Обратите внимание, что развернутая версия SCCM была получена из локального кэша CCM.

Вы можете добавить их к вашей логике обнаружения или требованиям, которые необходимы для исправления обнаружения этого условия.



0
ответ дан 3 December 2019 в 02:58

В этом есть смысл, sccm не обнаруживает, когда приложения устанавливаются вне его. Он использует таблицу wmi для отслеживания, поэтому, если кто-либо когда-либо удалит репозиторий wmi для «лечения» коррупции, он переустановит все пакеты sms, которые требуются для этой рабочей станции / пользователя. В 2007 году таблица wmi называлась SMS_InstalledSoftware, хотя я не могу найти то, что она называется для '12.

Сейчас я не выполняю установку установщика Windows, но я знаю, что есть таблица wmi под названием Win32_Product , в котором содержатся руководства по установке, которые вы найдете в разделе «Установка и удаление программ», я предполагаю, что он там находится, хотя могу ошибаться. Недостатком является то, что если они установят другую версию msi (то есть другой guid), то, возможно, это не будет отображаться в вашем обнаружении.

Иногда я проверяю инвентаризацию программного обеспечения в .exe, чтобы узнать, не у кого-то это уже установлено, и если да, то какой версии. Я не могу обойтись без людей, которые берут на себя установку приложений за пределами sccm, но это политика, и на самом деле sccm не для этого.

0
ответ дан 3 December 2019 в 02:58

Я знаю его старую, но не смог удержаться от добавления своей статьи, особенно о Win32_Product, так как это может иметь негативные последствия!

Я не могу комментировать ответ @Dotknuckle выше, поэтому мне пришлось сделать совершенно новый ответ. Win32_Product - плохая идея и требует больше времени, потому что он повторно регистрирует каждый прочитанный MSI-файл. http://www.itninja.com/link/why-win32-product-is-bad-news

Что касается SMS_InstalledSoftware, оно также существует в SCCM 2012 и находится в корневом пространстве имен \ cimv2 \ sms, это немного безопаснее, чем Win32_Product, а также быстрее.

То же, вероятно, применимо и к классу CCM_MSIProduct в отношении того, почему он быстрее. Я использую SMS_InstalledSoftware, так как он возвращает больше информации.

Я использовал свои собственные сценарии обнаружения в PowerShell, которые в основном делают что-то вроде этого.

$SPSS22 = Get-WmiObject -namespace Root\cimv2\sms -class SMS_InstalledSoftware -filter "ARPDisplayName LIKE '%SPSS Statistics%' AND ProductVersion='22.0.0.0'"
If($SPSS22){return $true}
0
ответ дан 3 December 2019 в 02:58

Иногда приложение не обнаруживается; даже журналы говорят, что он установлен без проблем. Но затем он говорит, что не обнаружен прямо внизу, где он говорит, что вернул код ошибки 0; успешно.

Перейдите в раздел «Установка и удаление программ» или выполните Windows-R и введите appwiz.cpl, посмотрите, установлено ли приложение. Если он отображается, запишите точное имя, которое отображается в программах добавления / удаления. Убери это. Если он быстро удаляется, возникают более серьезные проблемы. Что вам нужно сделать дальше, это открыть редактор реестра и нажать F3, чтобы выполнить поиск. Введите имя приложения, как оно было указано в добавлении / удалении. Как только вы начнете находить его в реестре, вам будут удалены ключи или значения с зависимостями. Вы удаляете ключи, если они есть в реестре где-то вроде «Удалить», «Установить», «Продукт», «Функция». Излишне говорить, что будьте очень осторожны с тем, что вы удаляете, вы можете сломать свой компьютер. После этого просто выполните еще один поиск, чтобы убедиться, что вы все удалили. Теперь попробуйте установить снова через системный центр, если он установится, то УРА! Если этого не произойдет, то есть еще некоторые основные ключи или значения реестра, которые необходимо удалить.

-1
ответ дан 3 December 2019 в 02:58

Теги

Похожие вопросы