<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>System Center PFE Russia Blog</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/scpferublog/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/scpferublog/feed.xml</link>
    <description>This blog about System Center from Microsoft PFE Team in the System Center area.</description>
    <lastBuildDate>Tue, 16 Apr 2019 06:16:25 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Управление обновлениями через ConfigMgr – часть 3</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/configmgr-update-management-part-3</link>
      <pubDate>Wed, 04 Jul 2018 12:29:20 GMT</pubDate>
      <dc:creator><![CDATA[Pavel Yurenev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=925</guid>
      <description><![CDATA[Сегодняшняя статья будет посвящена особенностям распространения обновлений через ConfigMgr. Чтобы не...]]></description>
      <content:encoded><![CDATA[Сегодняшняя статья будет посвящена особенностям распространения обновлений через ConfigMgr. Чтобы не повторять написанное в предыдущих частях (<a href="https://blogs.technet.microsoft.com/scpferublog/2017/11/22/configmgr-update-management-part-1/">часть 1</a>, <a href="https://blogs.technet.microsoft.com/scpferublog/2018/02/27/configmgr-update-management-part-2/">часть 2</a>), я буду предполагать, что инфраструктура доставки обновлений настроена корректно, а клиенты успешно выполняют циклы сканирования обновлений относительно ConfigMgr SUP. Также, как и ранее, не будут описаны конкретные действия в консоли: пошаговых описаний с картинками в интернете достаточно.
<h1>Особенности распространения обновлений через ConfigMgr</h1>
<h2>Статусы соответствия сканирования обновлений</h2>
Итак, если администратор всё сделал правильно, то после сканирования обновлений сервер ConfigMgr получит информацию о том, какие обновления (из имеющихся в БД, что важно!) установлены или требуются на каких машинах - говоря правильным языком, будет рассчитано состояние соответствия (compliance state). Помимо этого, ConfigMgr рассчитает состояние для всех групп обновлений и суммаризирует данные (поэтому надо ожидать традиционную для ConfigMgr задержку). Вариантов состояний соответствия для машины не так уж много, приведу их вместе с расшифровками:
<table border="1" cellpadding="4">
<tbody>
<tr>
<td width="200" bgcolor="lightgreen" rowspan="2"><strong>Соответствует (Compliant)</strong></td>
<td>Установлено (Installed)</td>
<td>Обновление применимо и установлено</td>
</tr>
<tr>
<td>Неприменимо (Not Required)</td>
<td>Нет обновляемого продукта или не выполнены пререквизиты</td>
</tr>
<tr>
<td width="200" bgcolor="salmon"><strong>Не соответствует (Non-compliant)</strong></td>
<td>Требуется (Required)</td>
<td>Обновление применимо и не установлено</td>
</tr>
<tr>
<td width="200" bgcolor="lightgray" rowspan="2"><strong>Неизвестно (Unknown):</strong></td>
<td rowspan="2">Нет отчёта о состоянии соответствия</td>
<td>Машина выключена</td>
</tr>
<tr>
<td>Не работает цикл сканирования или отчётности</td>
</tr>
</tbody>
</table>
В консоли суммаризированные данные по соответствию конкретных обновлений отображаются прямо в ноде All Software Updates, а по соответствию групп - в Software Update Groups.

<img width="983" height="93" align="alignnone" class="size-full wp-image-955" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/06/UpdateCompliance.jpg" />

Кроме того, детальные данные из БД можно получить в отчётах по соответствию обновлениям (Software Updates - A. Compliance), однако всегда надо понимать, относительно чего рассчитано состояние соответствия в каждом отчёте. Ведь вариантов не так уж мало: расположим их в порядке уменьшения числа обновлений в источнике.
<ol>
 	<li>Относительно <strong>MS Update</strong>, то есть всех обновлений в облаке. В ConfigMgr это не реализуется, однако может рассчитываться сторонним ПО, например, сканерами уязвимостей.</li>
 	<li>Относительно <strong>БД SUP/WSUS</strong>, то есть синхронизированных обновлений. Таков, например, отчёт <span>Compliance 5 - Specific computer.</span></li>
 	<li>Относительно <strong>группы обновлений (Software Update Group)</strong>, то есть списка, определённого администратором. Пример отчёта: <span> Compliance 3 - Update group (per update).</span></li>
 	<li>Относительно <strong>конкретного обновления</strong>. Пример отчёта: <span>Compliance 2 - Specific software update. </span></li>
</ol>
Это вносит некоторую путаницу в понятие соответствия, в результате которой во многих компаниях заинтересованные в получении информации о состоянии соответствия обновлений отделы или внешние аудиторы не понимают, о каком именно источнике идёт речь. Администратору ConfigMgr же имеет смысл проверять отчёты для контроля за своими действиями: например, искать <strong>требуемые</strong> обновления, которые не были <strong>развёрнуты</strong> на <strong>целевые машины</strong>, а также своевременно обновлять список продуктов и категорий на SUP/WSUS.

Также надо быть осторожнее с процентом соответствия, в консоли он рассчитывается от числа клиентов ConfigMgr: и в реальном окружении вряд ли будет составлять 100%. В отчётах процент может считаться относительно другого множества машин, например относительно коллекции.
<h2>Развёртывание обновлений</h2>
После получения информации состояния обновлений следующим шагом является планирование и осуществление развёртывания. Кратко напомню основные задействованные объекты в консоли:
<table border="1" cellpadding="4">
<tbody>
<tr>
<td><strong>Группа обновлений</strong></td>
<td>Software Update Group (SUG)</td>
<td>Список обновлений на установку, определяемый администратором</td>
</tr>
<tr>
<td><strong>Пакет обновлений</strong></td>
<td>Software Update Package (SUPkg)</td>
<td>Объект контента для хранения дистрибутивов.*</td>
</tr>
<tr>
<td><strong>Коллекция</strong></td>
<td>Collection</td>
<td>Определяемый администратором список целевых машин для развёртывания, c окном обслуживания или без</td>
</tr>
<tr>
<td><strong>Развёртывание</strong></td>
<td>Deployment</td>
<td>привязка SUG к коллекции, после создания которой начинается распространение обновлений</td>
</tr>
<tr>
<td><strong>Правило автоматического развёртывания</strong></td>
<td>Automated Deployment Rule (ADR)</td>
<td>Робот, автоматизирующий создание SUG, загрузку обновлений в SUPkg и развёртывание</td>
</tr>
<tr>
<td colspan="3"><small>* - Обновления из SUG должны быть закачаны в одну или несколько SUPkg, и распространены на точки развёртывания (DP) в границах клиента</small></td>
</tr>
</tbody>
</table>
Приведу некоторые не совсем очевидные лучшие практики по формированию данных объектов:
<ol>
 	<li><strong>Развёрнутая SUG не должна быть большой.</strong> В документации описан лимит в <a href="https://docs.microsoft.com/en-us/sccm/sum/plan-design/software-updates-best-practices">1000 обновлений</a>, по моему же персональному мнению стоит избегать групп из 100+ обновлений. Причина этого проста: развёрнутая группа - это политика, которая должна быть закачана и обработана клиентом. Чем она больше - чем больше нагрузка на машины, ведь клиент ConfigMgr должен фактически сравнить два списка - требуемых и развёрнутых в группе обновлений - и выбрать общую часть.</li>
 	<li>Даже <strong>не развёрнутая SUG не должна быть большой</strong>, ну и самих <strong>SUG не должно быть чересчур много</strong>. Серверу необходимо будет рассчитывать и суммаризировать состояния соответствия для каждой, чем больше групп и обновлений в группе, тем больше нагрузка на SQL.</li>
 	<li><strong>SUPkg не должна быть большой.</strong> Клиенты выберут то, что им нужно скачать из пакета, поэтому для них размер пакета не имеет значения, однако серверная часть будет делать новые снепшоты пакета, сжимать его и рассылать на DP и другие сайты  каждый раз, когда пакет обновляется. А обновляются SUPkg часто и, иногда, <strong>без ведома администратора</strong>: например, при удалении истёкших (expired) обновлений из БД они удаляются и из SUPkg.</li>
 	<li><strong>SUPkg надо собирать аккуратно, их имеет смысл распространить на все или большинство DP</strong>. Разбирательство на тему "почему клиент X не смог закачать и установить обновление Y" требуют выяснения всех развертываний данного обновления на данном клиенте, изучения их настроек, а также поиска всех пакетов, в которое входит данное обновление, и их расположения на DP. Поскольку найти в какие пакеты закачано обновление Y из консоли весьма нетривиально без прокликивания всех пакетов, то такие расследования доставляют крайне мало удовольствия.</li>
 	<li><strong>Коллекция для развёртывания не должна быть большой.</strong> Во-первых, правильно всё-таки распространять обновления волнами (или, как теперь модно называть, кольцами, update rings), чтобы нивелировать риски распространения обновления, которое "всё поломает", на все машины компании. Во-вторых, в очень больших окружениях генерация политики на множество клиентов может занять существенное время и нагрузить SQL. В третьих, напомню, что политики будут применены клиентами в течение часа (по умолчанию), а значит все клиенты начнут работу с обновлениями как раз в этот промежуток времени - и в больших окружениях могут изрядно нагрузить серверную часть закачками и отчётностью.</li>
 	<li><strong>Настройки развёртывания и окон обслуживания должны быть щадящими.</strong> Про это мы немного поговорим ниже.</li>
 	<li><strong>ADR должен закачивать минимально нужное количество обновлений</strong>. Тут всё просто, ради экономии трафика, времени и места на диске.</li>
</ol>
Если вы ещё не совсем устали, читая список выше, приведу еще парочку - но на этот раз касательно развёртывания обновлений. Напомню <a href="https://msdnshared.blob.core.windows.net/media/2017/11/CMUpdates-Deployment.png">картинку из прошлого поста</a> - чтобы клиент установил развёрнутое обновление, нужно пройти ряд стадий, которые традиционно выполняются по расписаниям. Я приведу их ниже с указанием типовых настроек клиента.
<ol>
 	<li>Клиент получит политику развёртывания: в течение 60 минут.</li>
 	<li>Сразу после получения политики клиент запустит оценку применимости развёрнутых обновлений - сравнит два списка - и соберёт список на установку. Здесь есть два нюанса:
<ol>
 	<li>Разумеется, при выполнении цикла сканирования WUA кэширует его результаты и при повторном сканировании не обращается к SUP/WSUS (делает offline scan). Однако у этого кэша есть TTL, и он составляет <a href="https://docs.microsoft.com/en-us/sccm/sum/understand/software-updates-introduction#BKMK_SUMCompliance">24 часа</a>. Если TTL истёк, то будет выполнена попытка просканировать обновления (<span>non-forced online scan)</span>.</li>
 	<li>Клиент отчитается о результатах оценки на сервер в виде сообщения о состоянии (state message): в течение 15 минут.</li>
</ol>
</li>
 	<li>Клиент обработает политику, и выберет время доступности развёртывания (Available Time):
<ol>
 	<li>Именно в это время начнётся закачка обновлений из списка установки с DP в кэш - но только в том случае, если развёртывание обязательное (Purpose = Required).</li>
 	<li>Пользователю будет отправлена нотификация о том, что ему доступно новое ПО - или не отправлена, если так указано в развёртывании.</li>
</ol>
</li>
 	<li>Клиент выберет время для установки обновлений на базе настроек развёртывания и окон обслуживания.
<ol>
 	<li style="text-align: left">Перед установкой клиент на всякий случай снова отсканирует обновления, если TTL истёк.</li>
 	<li style="text-align: left">Еще один повод не делать большие SUG: если клиент получит список на установку в рамках одного развёртывания дольше, чем окно обслуживания на коллекции, то установка будет ждать более долгого окна. По умолчанию обычные обновления требуют 10 минут, кумулятивные - 60 - посмотреть это можно в настройках индивидуального обновления.</li>
</ol>
</li>
 	<li>В момент Х клиент начнёт установку обновлений и перезагрузит машину при необходимости, не забывая отчитываться о каждом шаге на сервер в виде сообщения о состоянии.
<ol>
 	<li>Если на момент Х обновления были вытеснены из кэша другим ПО, то они будут закачаны заново. Это повод сделать кэш побольше.</li>
 	<li>Сразу после установки или после перезагрузки клиент делает оффлайн сканирование (forced offline scan) по умолчанию, об этом надо заботиться отдельно.</li>
</ol>
</li>
 	<li>Сервер обработает сообщения о состоянии и рассчитает состояние соответствия развёртывания, о котором мы также поговорим ниже.</li>
 	<li>Поскольку для развёртываний обновлений (как и приложений) нельзя указать время истечения (Expiration time), то целевая конфигурация будет проверяться и, при необходимости, применяться до удаления развёртывания - по расписанию переоценки обновлений (Software Update Re-Evaluation Cycle).</li>
</ol>
Из этого процесса и следуют лучшие практики для развёртывания:
<ol>
 	<li>При планировании развёртывания, а также циклов сканирования и переоценки обновлений, учитывайте TTL кэша и сопутствующую активность клиента WUA: <strong>SUP/WSUS должен быть доступен</strong>.</li>
 	<li>Назначайте <strong>Available Time не "прямо сейчас"</strong>: дайте время для того, чтобы обновлённый SUPkg дошёл до назначенных DP.</li>
 	<li><strong>Делайте Required-развёртывания</strong>. Во-первых, развёртывание в режиме Available даёт 90% гарантию того, что обновления установлены не будут :). Во-вторых, режим Available не позволяет заранее поместить дистрибутивы в кэш, а это, напомню, иногда гигабайты. Компромиссный вариант - Required-развёртывание с дедлайном в далёком будущем.</li>
 	<li>Назначайте <strong>Deadline не "прямо</strong> <strong>сейчас".</strong> а лучше через неделю. Это даст возможность пользователю, если таковой за машиной сидит, установить обновления тогда, когда ему будет это удобно.</li>
 	<li>Не делайте развертывания <strong>"втихую"</strong> в режиме Hide all notifications. Пользователю вряд ли понравится получить внезапные (для него) замедление работы машины с последующей перезагрузкой. Также при этом он не сможет поставить обновления добровольно.</li>
 	<li><strong>Не подавляйте перезапуск</strong>, кроме критичных систем: это также 90% гарантия того, что обновления не будут поставлены месяцами, а следующий релиз WannaCry/NotPetya найдёт чем поживиться в вашем окружении.</li>
</ol>
<h2>Статусы соответствия развёртывания обновлений</h2>
После осуществления развёртывания наступает стадия оценки его результатов. Поскольку развёртывания приложений, обновлений и шаблонов конфигурации являются State-based, то снова возникает понятие соответствия - в данном случае, соответствия требуемой конфигурации в виде развёрнутой группы обновлений. Снова классифицируем возможные результаты для машины:
<table border="1" cellpadding="4">
<tbody>
<tr>
<td width="200" bgcolor="lightgreen" rowspan="2"><strong>Соответствует (Compliant)</strong></td>
<td>Установлено (Installed)</td>
<td>Обновление установлено (неважно, через ConfigMgr или нет)</td>
</tr>
<tr>
<td>Неприменимо (Not Required)</td>
<td>Нет обновляемого продукта или не выполнены пререквизиты</td>
</tr>
<tr>
<td width="200" bgcolor="lightyellow" rowspan="5"><strong>В процессе (In Progress)</strong></td>
<td>Идёт закачка (Downloading)</td>
<td>Задача на закачку дистрибутивов началась и ещё не завершилась</td>
</tr>
<tr>
<td>Идёт установка (Installing)</td>
<td>Задача на установку началась и ещё не завершилась</td>
</tr>
<tr>
<td>Ожидаем окно обслуживания (Waiting for Maintenance Window)</td>
<td>Задача на установку ждёт доступного окна обслуживания</td>
</tr>
<tr>
<td>Ожидаем перезагрузку (Waiting for Restart)</td>
<td>Обновления установлены, ожидается перезапуск ОС</td>
</tr>
<tr>
<td>…</td>
<td>…</td>
</tr>
<tr>
<td width="200" bgcolor="salmon" rowspan="3"><strong>Ошибка (Error)</strong></td>
<td>Не удалось закачать обновления (Failed to download updates)</td>
<td>Клиент вне границ, в которых доступен SUPkg, закрыт порт и т.п.</td>
</tr>
<tr>
<td>Не удалось установить обновления (Failed to install updates)</td>
<td>Не хватило места на диске, или установка обновляемого ПО повреждена, и т.п.</td>
</tr>
<tr>
<td>…</td>
<td>…</td>
</tr>
<tr>
<td width="200" bgcolor="lightgray" rowspan="2"><strong>Неизвестно (Unknown):</strong></td>
<td rowspan="2">Нет отчёта о состоянии соответствия</td>
<td>Машина выключена</td>
</tr>
<tr>
<td>Не работает цикл доставки политик или отчётности</td>
</tr>
</tbody>
</table>
В консоли состояние соответствия развёртывания видно там же, где и статистика по прочим развёртываниям во вкладке мониторинга.

<img width="1024" height="43" class="alignnone size-large wp-image-975" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/12/Update_deploymentstatus.png" />

Про решение типовых проблем мы поговорим чуть позже, а пока же необходимо подчеркнуть, что прямой связи между состояниями соответствия сканирования и развёртывания нет. Первое измеряется на основе определенных производителями ПО правил применимости обновлений, второе же - на основе применения целевой конфигурации, заданной администратором - и это различие нужно чётко осознавать при анализе данных соответствия и подготовке отчётности.
<h2>Типичные проблемы</h2>
<h4>Развёртывание обновлений остаётся в состоянии Unknown даже если клиент активен/онлайн в консоли</h4>
Можно указать очень много потенциальных причин такого поведения: от проблем с доставкой политики до обработки сообщений о состоянии, но необходимо упомянуть главное: для того, чтобы клиент начал устанавливать обновления, необходимо успешно завершить цикл сканирования. А значит, добро пожаловать в заключительную часть <a target="_blank" href="https://blogs.technet.microsoft.com/scpferublog/2018/02/27/configmgr-update-management-part-2/" rel="noopener">предыдущей статьи.</a>
<h4>Обновления не закачиваются</h4>
Опять же, возможных причин очень много, приведу банальные:
<ol>
 	<li>Обновление отсутствует в пакете, который распространён на DP в группе границ клиента</li>
 	<li>Что-то мешает закачке и проверке хеша: сетевое оборудование (ох уж эти оптимизаторы WAN-линков!), антивирусное ПО</li>
 	<li>Нет места на диске или кэше: скорее всего первое, если вы не злоупотребляете галочкой "Persist content in client cache"</li>
</ol>
<h4>Обновления устанавливаются с ошибками</h4>
Снова список самых частых проблем:
<ol>
 	<li>Недостаток ресурсов: памяти, места на диске - а также "железные" проблемы любого сорта</li>
 	<li>Повреждена установка обновляемого продукта: самое частое - хранилище компонентов  ОС Windows (CBS Store), установка MSI-версий Office.</li>
</ol>
К сожалению, в отличие от ошибок сканирования, проблемы установки редко поддаются массовому исправлению - "волшебных пуль" здесь нет. Для некоторых обновлений есть известные проблемы, если вы видите, что какое-то обновление массово не устанавливается - не поленитесь проверить статью KB.

По моему опыту, "лечить" хранилище компонентов Windows массово практически нереально: одно из немногих доступных решений - это <a target="_blank" href="https://support.microsoft.com/en-us/help/947821/fix-windows-update-errors-by-using-the-dism-or-system-update-readiness" rel="noopener">CheckSUR/DISM, </a>однако оправданно это только для серверов или критичных рабочих станций. Похожая ситуация складывается и с продуктами на базе MSI (Office, Silverlight). В основном же стоит рассчитывать на переустановку ОС: это обычно быстрее и надёжнее.
<h4>Клиенты вечно ждут окна обслуживания</h4>
Помимо банальной ситуации, когда окно обслуживания оказалось меньше, чем список обновлений на установку в рамках одного развёртывания, приведу еще пару интересных случаев:
<ol>
 	<li>Неповторяющееся окно в прошлом или далёком будущем. Это ошибка администратора, которую может быть нетривиально решить, если коллекций и окон обслуживания на них много. Напомню, что есть штатный отчёт по окнам обслуживания, доступным конкретному клиенту, ну и порекомендую не злоупотреблять неповторяющимися окнами.</li>
 	<li>Если на клиента назначено хотя бы одно окно обслуживания только для обновлений (Software Updates/Type=4), то он не будет устанавливать обновления в окно для всех развёртываний (All Deployments, Type=1). Это <a href="https://social.technet.microsoft.com/Forums/en-US/2e29e833-aee3-49bb-8a3c-f3ea358acef5/updates-not-installing-in-maintenance-windows">поведение</a> будет рано или поздно исправлено, пока же я рекомендую учитывать его при развёртываниях.</li>
</ol>
<h4>Развёртывание обновлений успешно, однако некоторые обновления не установлены</h4>
Обманчивое "зелёное" состояние "Соответствует"/Compliant в консоли успокаивает администратора до той поры, пока кто-то из отдела информационной безопасности не найдёт большое количество незапатченных машин, или, хуже того, их не найдет злоумышленник или вирус. Важный момент кроется в том, что у обновлений бывают пререквизиты: и пока они не установлены, то обновление будет попадать в состояние "Не требуется"/Not Required, а следовательно - "Соответствует"/Compliant. Как только пререквизит будет установлен - машинам может потребоваться сразу большой список обновлений, выпущенных после пререквизита.

В пределах одного месяца релиза таких обновлений практически не случается, однако на более долгих промежутках времени шансы есть. Классическим случаем пререквизита являются всевозможные Сервисные пакеты (Service Packs): как правило, они включают в себя все предыдущие обновления, и являются пререквизитом для следующих. В ту же категорию попадают большие пакеты обновлений для Windows 8.1/2012 R2 (<a href="https://support.microsoft.com/en-us/help/2919355/windows-rt-8-1-windows-8-1-and-windows-server-2012-r2-update-april-201">KB2919355</a> и более поздние).

Поэтому я рекомендую внимательно изучать отчёты по сканированию машин, такие как <span>Management 2 - Updates required but not deployed</span>, а также своевременно добавлять новые продукты в настройках SUP. Кроме того, по возможности, необходимо развёртывать обновления в ежемесячном цикле, а операционные системы и ПО - сразу с интегрированными обновлениями.
<h1>Продолжение следует</h1>
На этом технический обзор механизма развёртывания обновлений через Configuration Manager завершён. Я надеюсь, что он получился не слишком долгим и занудным, и не отвратит вас от использования ConfigMgr как средства доставки обновлений.

Однако цикл статей на этом не закончен: в последней части мы поговорим о том, как правильно выстроить процесс установки обновлений и какие технические решения можно применить. Следите за пополнениями блога и спасибо за внимание!]]></content:encoded>
    </item>
    <item>
      <title>Управление обновлениями через ConfigMgr – часть 2</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/configmgr-update-management-part-2</link>
      <pubDate>Tue, 27 Feb 2018 19:01:11 GMT</pubDate>
      <dc:creator><![CDATA[Pavel Yurenev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=855</guid>
      <description><![CDATA[Сегодня мы продолжаем тему распространения обновлений ОС и прочего ПО через Configuration Manager,...]]></description>
      <content:encoded><![CDATA[Сегодня мы продолжаем тему распространения обновлений ОС и прочего ПО через Configuration Manager, фокусируясь непосредственно на работе по миграции клиентов. Предыдущая часть опубликована <a href="https://blogs.technet.microsoft.com/scpferublog/2017/11/22/configmgr-update-management-part-1/">ранее в этом блоге</a>, в этой части мы предполагаем, что серверная инфраструктура готова и работает нормально.

Как правило, в компании на момент появления там инженера поддержки уже есть какая-то инфраструктура распространения обновлений: как правило, это один или несколько серверов WSUS, гораздо реже - старая иерархия ConfigMgr или бесконтрольное обновление рабочих станций через Microsoft Update. По сути все эти случаи мало отличаются друг от друга, поэтому я буду исходить из первого сценария.
<h1>Переход на распространение обновлений через ConfigMgr</h1>
Итак, пусть в компании используется один или несколько серверов WSUS, а также развернута инфраструктура ConfigMgr. На серверах WSUS созданы некие группы машин, а в AD настроены групповые политики для указания клиентам адресов WSUS-серверов и настроек установки обновлений и привязки к группам. Также на серверах WSUS одобрены к распространению все или часть обновлений, дистрибутивы одобренных обновлений закачаны в папку WSUSContent.

Путь хорошего администратора всегда начинается с выделения пилотной группы (в данном случае машин). Я рекомендую создать выделенную группу безопасности в AD и добавить туда машины, над которыми не жалко будет поставить эксперимент (по странному стечению обстоятельств обычно таковыми оказываются машины сотрудников отдела ИТ).

Напомню, что клиент ConfigMgr прописывает URL SUP/WSUS в локальную политику на машине. Это означает, что если на машину назначена доменная политика с указанием (другого) адреса WSUS, то клиент ConfigMgr не сможет осуществить цикл сканирования. Однако и снимать доменную политику сразу нельзя: <strong>как только Windows Update Agent (WUA) обнаружит удаление политики, произойдет сканирование, закачка и установка обновлений с Microsoft Update (MU) </strong>- производитель Windows тем самым позаботился о максимальной защищённости машины. Это несёт риски как установки непроверенных обновлений (и непреднамеренных перезагрузок), так и перегрузки интернет-каналов.

Поэтому правильно будет создать отдельный объект групповой политики (GPO) и отключить автоматические обновления в нём: Computer Configuration\Administrative Templates\Windows Components\Windows Update\Configure Automatic Updates == Disabled. Это предупредит автоматические "общение" WUA с Microsoft Update на время миграции. Данную GPO разумно отфильтровать по ранее созданной группе безопасности и назначить на те же OU, что и "боевую" GPO для WSUS. В то же время у данной группы безопасности нужно отобрать права на чтение "боевой" GPO через тот же механизм Security Filtering.

Далее в консоли ConfigMgr необходимо создать новую Custom Device Client Setting со включённым управлением обновлениями: Software Updates, Enable Software Updates on Clients = Yes (и расписаниями сканирования/переоценки обновлений), а также коллекцию для пилотной группы машин - можно сформировать её по той же группе в AD (убедившись, что группа обнаруживается через AD Group Discovery). После назначения клиентской настройки на коллекцию и наполнения коллекции клиенты начнут получать новый адрес SUP/WSUS и немедленно начинать полное сканирование относительно нового источника.

<strong>N.B.</strong>
<ol>
 	<li>Настройки, связанные с членством машины в группе AD, будут применены только после перезагрузки машины (или сброса кэша Kerberos). Поэтому позаботьтесь или о перезагрузке пилотных машин после добавления в группу, либо о развертывании <a href="https://blogs.msdn.microsoft.com/jamoyer/2008/01/30/update-computer-account-group-membership-without-rebooting/">минималистичного скрипта</a>.</li>
 	<li>Помните про трафик и нагрузку на сервер WSUS, связанные с полным сканированием: если пилотная группа окажется чересчур велика, то вы рискуете перегрузить каналы связи и/или пул приложения WSUS в IIS. Впрочем, при соблюдении лучших практик по настройке WSUS из <a href="https://blogs.technet.microsoft.com/scpferublog/2017/11/22/configmgr-update-management-part-1/">предыдущей части</a> последнее маловероятно.</li>
</ol>
С этого момента администратору можно откинуться на спинку кресла и начать ждать результатов сканирования. Удобным инструментом отслеживания результата является штатный отчет Software Updates - D Scan\Scan 1 - Last Scan States by Collection (вообще штатные отчёты по обновлениям на удивление хороши).

[caption id="attachment_885" align="alignnone" width="1024"]<a href="https://msdnshared.blob.core.windows.net/media/2018/02/LastScanStatesByCollection.png"><img width="1024" height="393" class="size-large wp-image-885" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/LastScanStatesByCollection-1024x393.png" /></a> Рис. 1. Отчёт Last Scan States By Collection[/caption]

В идеальном мире администратору потребовалось бы только наслаждаться увеличением счётчика Scan Completed. Однако самое интересное обычно таится во вложенном отчёт Scan 3 - Clients of a collection reporting a specific state (secondary), в который можно попасть кликнув по линку Scan Failed. Напомню, что отчёт можно выгрузить в CSV и обработать в любимом табличном редакторе, чтобы отсортировать проблемы по частоте и лёгкости устранения.

[caption id="attachment_895" align="alignnone" width="1024"]<a href="https://msdnshared.blob.core.windows.net/media/2018/02/FailedScans.png"><img width="1024" height="337" class="size-large wp-image-895" alt="" src="https://msdnshared.blob.core.windows.net/media/2018/02/FailedScans-1024x337.png" /></a> Рис. 2. Отчёт по неудачным сканированиям обновлений (Clients of a Collection Reporting a Specific State)[/caption]

Как только процент успешно отсканировавших обновления машин достигнет некого целевого значения (например, 90%), то можно переходить к пилотному развёртыванию обновлений. Помните, что <strong>без успешного завершения цикла сканирования машина никогда не начнёт цикл установки обновлений,</strong> поэтому устранение проблем сканирования является критичным для продолжения!

После достижения успеха как со сканированием, так и пилотным развёртыванием обновлений, пилотную группу нужно постепенно расширять до всей организации, помня о полном сканировании, которое происходит при включении новой машины в группу.
<h2>Типичные проблемы</h2>
Устранение многочисленных проблем на этапе сканирования является критичным, поэтому подробно рассмотрим самые частые варианты.
<h4>Group Policy Conflict</h4>
Данную ошибку можно наблюдать как в отчёте, так и в логе Scanagent.log на клиенте при попытке сканирования. В 90% случаев она значит именно то, что написано: есть групповая политика, которая указывает адрес WSUS, и она назначена на проблемную машину. Найти "виновника" можно как со стороны сервера (через Group Policy Modeling Wizard), так и со стороны клиента (в отчёте gpresult или RSOP.msc).

В редких случаях выясняется, что доменной групповой политики не назначено, но ошибка сохраняется. В таких случаях имеет смысл забэкапить и удалить файл %Windir%\system32\GroupPolicy\Machine\Registry.pol, а затем обновить групповую политику и запустить цикл сканирования.
<h4>Сетевые проблемы</h4>
В общее описание входят все проблемы на сетевом уровне:
<ol>
 	<li>Файрволлы</li>
 	<li>DNS</li>
 	<li>Прокси (да, агент WUA умеет читать пользовательские настройки)</li>
 	<li>…</li>
</ol>
Такие проблемы хорошо детектируются по логам Scanagent.log/WindowsUpdate.log и отчётам Configuration Manager, однако их решение зачастую находится за пределами зоны ответственности администратора ConfigMgr.
<h4>Проблемы Windows Update Agent</h4>
Windows Update Agent является частью операционной системы, поэтому обновления и исправления для него включены в таковые для ОС. Это иногда приводит к патовой ситуации: агент не работает, потому что не обновлён, а обновиться не может, потому что не работает. Классическим примером является WUA в Windows 7 SP1 без обновлений, который де-факто практически неработоспособен в современных окружениях. Поэтому позаботьтесь о том, чтобы в вашей инфраструктуре новые машины имели последнее кумулятивное обновление для ОС, а если уже случилось и нашлись необновлённые машины с ОС Windows 7, 8.1 или Windows 10 1607 - чтобы обновление, исправляющее функционал WUA было установлено на такую машину через механизм Software Distribution в ConfigMgr (мы рекомендуем, естественно, использовать Application).

Последние релизы WUA вне кумулятивного обновления для старых ОС приведены ниже:
<ol>
 	<li>Windows 7 и 2008 R2: <a href="https://support.microsoft.com/en-us/help/3138612/windows-update-client-for-windows-7-and-windows-server-2008-r2-march-2">https://support.microsoft.com/en-us/help/3138612/windows-update-client-for-windows-7-and-windows-server-2008-r2-march-2</a></li>
 	<li>Windows 8.1 и 2012 R2: <a href="https://support.microsoft.com/en-us/help/3138615/windows-update-client-for-windows-8-1-and-windows-server-2012-r2-march">https://support.microsoft.com/en-us/help/3138615/windows-update-client-for-windows-8-1-and-windows-server-2012-r2-march</a></li>
</ol>
Команды на установку описаны в <a href="https://support.microsoft.com/en-us/help/934307/description-of-the-windows-update-standalone-installer-in-windows">статье базы знаний</a>, я рекомендую распаковать MSU-файл и использовать PkgMgr для того, чтобы избежать использования API WUA. Типовой скрипт для детектирования наличия обновления проще всего написать на PS:
<pre style="margin: 0in;font-family: 'Courier New';font-size: 9.0pt"><span>$KB </span><span>= </span><span>'KB3138612'</span>
<span>If</span><span>(</span><span>Get-WmiObject </span><span>-Namespace </span><span>'root/cimv2' </span><span>-Class </span><span>'Win32_QuickFixEngineering' </span><span>-Filter </span><span>"HotFixId = '</span><span>$KB</span><span>'"</span><span>){</span><span>Write-Output </span><span>"</span><span>$KB</span><span> is installed"</span><span>; </span><span>Exit</span><span>}</span>
<span>Else</span><span> {</span><span>Exit</span><span>} </span></pre>
Также иногда оказывается повреждённой БД Jet агента WUA (что приводит к неспецифичным ошибкам в отчётах ConfigMgr или ошибке 0x8024400D в логе WindowsUpdate.log). В этом случае поможет классический рецепт с удалением БД вместе с папкой \SoftwareDistribution после остановки службы WUA. Последующий перезапуск создаст БД заново и вызовет незамедлительное полное сканирование относительно указанного в политике WSUS.
<h4>Всевозможные проблемы на уровне ОС</h4>
Нехватка памяти, дискового пространства, утечки ресурсов обычно приводят к неспецифичным ошибкам сканирования: такие случаи требуют индивидуального подхода и изучения логов Scanagent.log ConfigMgr и WindowsUpdate.log WUA (напомню, в Windows 10 лог ведётся в формате ETL, и для его чтения нужно <a href="https://support.microsoft.com/en-us/help/3036646/how-to-read-windows-update-logs-in-windows-10-version-1607">повозиться</a>). Классические сообщения в отчёте: "Not enough storage is available to complete this operation.", "Insufficient system resources exist to complete the requested service." и тому подобные.
<h4>Ошибка "Exceeded max server round trips: 0x80244010" при первичном сканировании</h4>
Такая ошибка обычно свидетельствует о том, что WSUS, относительно которого производится сканирование, давно не проходил процедуру очистки. Детальное описание причин приведено в другом <a href="https://blogs.technet.microsoft.com/sus/2008/09/18/wsus-clients-fail-with-warning-syncserverupdatesinternal-failed-0x80244010/">блоге</a>.

Плохим временным решением может быть исправление максимального размера XML в БД WSUS (200 kb по умолчанию) через запрос SQL:

USE SUSDB
GO
UPDATE tbConfigurationC SET <b>MaxXMLPerRequest</b> = 5000000
<h2><span style="float: none;background-color: transparent;color: #333333;font-family: 'Segoe UI Light','Segoe UI',Tahoma,Arial,'Helvetica Neue',Helvetica,Sans-Serif;font-size: 30px;font-style: normal;font-variant: normal;font-weight: 400;letter-spacing: normal;line-height: 33px;text-align: left;text-decoration: none;text-indent: 0px">Продолжение следует</span></h2>
В <a href="https://blogs.technet.microsoft.com/scpferublog/2018/07/04/configmgr-update-management-part-3/">следующей части</a> мы поговорим про типичные проблемы развёртывания обновлений и их устранение. Следите за обновлениями!]]></content:encoded>
    </item>
    <item>
      <title>Управление обновлениями через ConfigMgr - часть 1</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/configmgr-update-management-part-1</link>
      <pubDate>Wed, 22 Nov 2017 12:15:43 GMT</pubDate>
      <dc:creator><![CDATA[Pavel Yurenev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=816</guid>
      <description><![CDATA[Введение
По моему опыту инженера поддержки в даже больших и зрелых компаниях администраторы...]]></description>
      <content:encoded><![CDATA[<h2>Введение</h2>
По моему опыту инженера поддержки в даже больших и зрелых компаниях администраторы пользуются WSUS для доставки обновлений ПО Microsoft при имеющейся инфраструктуре Configuration Manager (ConfigMgr). Причин этому много, но чаще всего называется простота управления WSUS. Это, разумеется, правда, однако ConfigMgr позволяет выстроить процесс развертывания обновлений более правильно с точки зрения ITIL/MOF, а также имеет более богатую отчётность. Например, ConfigMgr позволяет составлять и хранить списки обновлений в виде групп – а ведь именно список обновлений должен проходить цикл тестирования и внутреннего утверждения. Для WSUS список придётся держать отдельно, в лучшем случае это делается автоматизированно скриптами, в худшем – поддерживается вручную.

Кроме того, многие администраторы (и я когда-то был в их числе) попросту не понимают, как работает ConfigMgr в связке с WSUS – и я не видел ни одного достойного материала на эту тему, тем более на русском языке.

Чтобы облегчить переход на более правильную схему доставки и установки обновлений, я решил написать данный цикл статей. Помимо непосредственных руководств к действию я собрал в них многочисленные подводные камни, щедро разбросанные разработчиками из разных команд и почему-то никем ещё не собранные в одной статье. Версия ConfigMgr, о которой пойдет речь – не ниже ConfigMgr 2012 SP1. Удачного чтения!

Важный момент: в этих статьях не будет пошаговых инструкций как установить SUP или развернуть обновления – на эту тему материалов в Сети предостаточно, например в <a target="_blank" href="https://social.technet.microsoft.com/wiki/contents/articles/33035.system-center-configuration-manager-current-branch-survival-guide.aspx" rel="noopener">ConfigMgr Survival Guide.</a>
<h1>Развертывание инфраструктуры SUP в ConfigMgr</h1>
Начнём мы с технической настройки серверной части и поговорим о том, как всё это работает
<h3>Кау устроены обновления</h3>
Перед тем, как переходить к описанию работы инфраструктуры, напомню две составляющих любого обновления:

1)      Собственно <strong>дистрибутив</strong> обновления: теоретически это может быть что угодно. На практике это .msu, .cab, .msp и .exe-файлы, однако теоретически ничего не мешает распространять любой скрипт. Дистрибутив должен быть подписан цифровой подписью, чтобы исключить его подмену во время закачки – обновления, выпущенные Microsoft, само собой, подписаны Microsoft, и клиенты доверяют им по умолчанию. Сторонние подписи по умолчанию не принимаются.

2)      <strong>Метаданные</strong> обновления: название, описание (на разных языках), номера статьи KB и бюллетеня безопасности и прочее, что вы можете увидеть в консолях WSUS или ConfigMgr, но самое важное - правила применимости (Installable Rules) и детектирования (Installed Rules) установки, командная строка на установку или хэндлер, а также правила замены (supersedence).

N.B. Те, кто работают с объектами Application в ConfigMgr легко узнают, откуда взят этот концепт.

Обновления делятся по:

1)      <strong>Продуктам</strong>

2)      <strong>Классификациям</strong>

3)      <strong>Языкам</strong>

С конкретным обновлением может произойти следующее:

1)      <strong>Release:</strong> выпуск обновления – добавление его метаданных в БД Microsoft Update и выкладывание дистрибутива для закачки.

2)      <strong>Revise:</strong> перевыпуск обновления – замена обновления под тем же номером KB (обычно происходит в результате обнаружения проблем после релиза).

3)      <strong>Supersede:</strong> замена обновления – релиз нового обновления, которое полностью заменяет старое.

4)      <strong>Expire:</strong> устаревание обновления – прекращение его распространения с последующим удалением (например, в случае обнаружения фундаментальной проблемы). Также автоматически устаревают старые ревизии обновлений – только последняя ревизия доступна для установки.

Важно также понимать, что обновление может быть устаревшим (expired) в локальной инфраструктуре и распространяться при этом в Microsoft Update. Более того, статус устаревания может быть разный в разных локальных системах.
<h3>Как работает инфраструктура обновлений</h3>
Одним из компонентов ОС Windows является Windows Update Agent (WUA). Работает данный компонент в одной из служб Windows и отвечает за все процессы установки обновлений.

Агент имеет собственную папку в папке установки ОС (%Windir%\SoftwareDistribution), в которой располагается его БД Jet (\DataStore), а также прочие подпапки, описание которых выходит за рамки данной статьи. Также по умолчанию туда закачиваются дистрибутивы обновлений перед установкой (\Download).

Агент настраивается через реестр или групповые политики: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate и Computer Configuration\Administrative Templates\Windows Components\Windows Update

Не останавливаясь подробно на <a href="https://msdn.microsoft.com/en-us/library/mt242396.aspx">протоколе</a>, по которому агент взаимодействует с сервером, и деталях происходящих в нём процессов, выделим два основных режима работы агента:

1)      Сканирование обновлений: инвентаризация установленных на клиенте продуктов и синхронизация БД агента с БД сервера – фактически выбор и закачка метаданных в локальную БД Jet, оценка правил применимости и детектирования.

2)      Установка обновлений: закачка найденных обновлений в кэш, исполнение правил установки, детектирование результата после установки.
<h4><em>Как работает «домашний» клиент</em></h4>
На личном компьютере политика, назначающая источник обновлений, обычно отсутствует. В этой ситуации агент WUA сканирует обновления непосредственно относительно Microsoft Update (MU) и оттуда же закачивает/устанавливает дистрибутивы.
<h4><em>Как работает клиент WSUS</em></h4>
В типичном сценарии использования инфраструктуры WSUS администратор групповой политикой назначает адрес сервера WSUS. Агенты WUA начинают сканировать обновления относительно этого источника, закачка (разумеется, с использованием BITS) и установка также идёт с него – как только администратор утвердит обновления в консоли. Кроме того, через ту же GPO можно настроить и отправку отчёта на сервер WSUS.
<h4><em>Как работает ConfigMgr/SUP</em></h4>
В этом случае всё заметно сложнее: ConfigMgr добавляет еще один слой управления (и точек отказа). Упрощенная схема процесса сканирования обновлений приведена на рисунке 1.

[caption id="attachment_835" align="alignnone" width="500"]<a href="https://msdnshared.blob.core.windows.net/media/2017/11/CMUpdates-Scan.png"><img width="500" height="696" class=" wp-image-835" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/CMUpdates-Scan.png" /></a> Рисунок 1. Схема процесса сканирования обновлений[/caption]

После выполнения действий 1-4 (синхронизации обновлений на сервере ConfigMgr) в БД WSUS и ConfigMgr оказывается фактически часть метаданных облака Microsoft Update по выбранным администратором продуктам, языкам и классификациям.

На шагах 5-8 агент ConfigMgr определяет ближайший к нему сервер SUP/WSUS (по границам сайта) и вписывает его в <strong>локальную</strong> политику на клиенте: поэтому наличие доменной GPO, конфигурирующей адрес сервера обновлений, немедленно заблокирует сканирование обновлений.

Затем по заданному администратором расписанию агент инициирует сканирование обновлений относительно найденного WSUS в WUA, забирает результат и передаёт его в виде сообщений о состоянии на сервер ConfigMgr. После успешного выполнения шагов 9-13 как на клиенте, так и на сервере будет сформирован список обновлений, которые применимы на данном клиенте. Сервер на основании этих данных сможет построить отчёты и рассчитать соответствие для групп обновлений и каждого обновления в отдельности.

На рисунке 2 приведена упрощенная схема процесса установки обновлений.

[caption id="attachment_826" align="alignnone" width="500"]<a href="https://msdnshared.blob.core.windows.net/media/2017/11/CMUpdates-Deployment.png"><img width="500" height="702" class="wp-image-826 " alt="" src="https://msdnshared.blob.core.windows.net/media/2017/11/CMUpdates-Deployment.png" /></a> Рисунок 2. Схема процесса развертывания обновлений[/caption]

Администратор создаёт список обновлений на установку (группу обновлений), закачивает их в пакет обновлений и разворачивает группу (шаги 1-3). Клиент получает политику развертывания, сравнивает списки применимых и развёрнутых обновлений, выбирает и закачивает дистрибутивы только для нужных обновлений и передаёт их на установку WUA (шаги 4-7). Как и в случае сканирования, клиент собирает отчёт по установке от WUA и перенаправляет его на сервер в виде сообщений о состоянии (шаги 7-8). Итогом процесса является появление результатов развертывания в консоли и отчётах ConfigMgr.

Критичным является успешное выполнение <strong>обоих</strong> <strong>процессов:</strong> если не работает сканирование, то агент не сможет верно определить, какие обновления нужны. А без получения политики развёртывания установки и вовсе не произойдет.

P.S. Процесс переоценки обновлений после их установки (дельта-сканирование) опущен на схеме для простоты, однако подразумевает, что SUP/WSUS доступна клиентам во время установки обновлений.
<h3>Дизайн инфраструктуры</h3>
Одно из ключевых отличий инфраструктуры ConfigMgr/SUP от WSUS – это управление контентом. Именно из-за размеров дистрибутивов администраторам приходится размещать по серверу WSUS в каждой удалённой сети, и поддерживать репликацию – в результате образуются огромные иерархии серверов WSUS, иногда насчитывающие десятки серверов. В случае ConfigMgr для закачки дистрибутивов используются точки распространения (Distribution Point, DP) – зачастую их количество не уступает иерархии WSUS, а то и превышает её в разы. Однако DP – это очень простой сервер (IIS + ISAPI-фильтр + WMI-провайдер + папка с дистрибутивами), и поддерживать его гораздо проще.

Поскольку WSUS в составе SUP отвечает только за сканирование, то количество WSUS можно сильно ограничить. Дело в том, что трафик, порождаемый сканированием, обычно невелик и составляет <a href="https://blogs.technet.microsoft.com/manageabilityguys/2013/04/22/system-center-2012-configuration-manager-client-network-traffic-estimates-series-part-1-of-3/">сотни килобайт</a>. Исключение составляет начальное сканирование, порождаемый которым трафик может достигать 10 Мб при обилии продуктов Microsoft, установленных на машине.

Именно поэтому поддерживается <a href="https://docs.microsoft.com/en-us/sccm/core/plan-design/configs/size-and-scale-numbers">до 25 000 клиентов</a> на точку управления обновлениями (SUP), если она совмещена с сайт-сервером, и до <a href="https://docs.microsoft.com/en-us/sccm/sum/plan-design/plan-for-software-updates">до 150 000 клиентов</a>, если SUP установлена на удалённой машине.. Тем самым большинству инфраструктур будет достаточно <strong>одной точки на сайт</strong>, тем более первичный сайт на момент написания статей поддерживал аж <a href="https://docs.microsoft.com/en-us/sccm/core/plan-design/configs/size-and-scale-numbers">до 150 000 клиентов</a> (кстати поэтому сейчас мы обычно не рекомендуем создание центрального сайта администрирования CAS). Кроме того, начиная с версии ConfigMgr 1702 поддерживается SUP Affinity: привязка SUP к группам границ, что позволяет создавать SUP-ы в удаленных локациях в рамках одного сайта.
<h3>Настройки SUP/WSUS</h3>
SUP сама по себе представляет набор DLL, загружаемых в треды процесса службы SMS_Executive, которые используют API WSUS для управления последним – поэтому установка SUP поверх WSUS занимает считанные минуты и тривиальна. Установка WSUS также не представляет большой сложности, однако невнимательный администратор наверняка пропустит шаг, на котором можно выбрать установку БД WSUS не на Windows Internal Database (и установку самой WID). Поскольку с ConfigMgr поставляется полноценный SQL Server Standard, то БД WSUS имеет смысл разместить там, и не занимать ресурсы ОС вторым экземпляром SQL. Хорошей идеей также будет <strong>увеличить размер файлов БД</strong> хотя бы до 5 Гб и настроить фиксированный прирост (autogrowth) по 1 Гб до первой синхронизации – почему-то разработчики при создании БД решили задавать ей размер в 1 Мб с приростом 1%.

В больших инфраструктурах также имеет смысл соблюсти лучшие практики по настройке БД SQL и перенести файлы данных и логи БД WSUS на отдельные диски.

Однако после установки необходимо тщательно отнестись к подбору продуктов и классификаций: напомню, делать это надо НЕ в консоли WSUS, а в настройках SUP. До первой синхронизации вы увидите неактуальный список продуктов – он будет обновлён только когда она завершится. <strong>Снимите все галочки перед первой синхронизацией!</strong> Затем не поленитесь пройти по списку и поставить галочки только у тех продуктов, которые используются в вашей инфраструктуре (и да, это повод уменьшить их разнообразие). Кроме того, я не рекомендую ставить галочки у продуктов наподобие “Windows 10 Drivers” или “Windows Server 2012 Dynamic Setup” – клиенты ConfigMgr всё равно не «умеют» использовать ни то, ни другое. Хорошая расшифровка названий продуктов есть <a target="_blank" href="https://www.urtech.ca/2016/12/solved-what-do-the-windows-10-product-names-mean-in-wsus/" rel="noopener">здесь.</a>

Отдельная головная боль – это языки. С самого начала надо убедиться, что вы не синхронизируете «лишние» языки (а по умолчанию вы обнаружите довольно богатый набор) и убрать их. Дело в том, что после начальной синхронизации вы галочки языков уберёте, а метаданные для этих языков в БД не исчезнут – и впредь для многих обновлений вам придется закачивать ненужные языки.

Ещё один важнейший момент - это настройки IIS на WSUS по умолчанию: они больше подходят для небольших компаний. Поэтому если в вашей инфраструктуре планируется более 1 000 клиентов, то <strong>позаботьтесь о следующих настройках</strong> пула приложений (Application Pool) WSUSPool в IIS:

1)      Увеличьте размер очереди (Queue Length) до 2000

2)      Увеличьте лимит использования памяти (Private Memory limit) как минимум до 4 Гб, а лучше больше. Делать как в <a href="https://docs.microsoft.com/en-us/sccm/sum/plan-design/plan-for-software-updates">документации</a> 0 (безлимитно), на мой взгляд, довольно опасно (если, конечно, для SUP у вас не используется уберсервер 😊).

Замечу, что для SUP на CAS это делать не требуется – клиенты в норме туда не обращаются.

Однако когда процесс первичной настройки будет пройден, то можно несколько расслабиться и впредь только добавлять новые продукты и удалять старые.
<h3>Подводные камни</h3>
Как и в случае с WDS, мы не рекомендуем лишний раз «залезать» в консоль WSUS, который управляется ConfigMgr, и уж точно не рекомендуем утверждать (approve) обновления (за исключением, м.б. SCEP). Однако, по мнению разработчиков, это не должно останавливать вас от выполнения задач обслуживания WSUS: а именно очистки БД от замененных, отклонённых и устаревших обновлений, а также реиндексации БД SQL! Поэтому позаботьтесь, чтобы в вашей инфраструктуре были реализованы <a href="https://blogs.technet.microsoft.com/configurationmgr/2016/01/26/the-complete-guide-to-microsoft-wsus-and-configuration-manager-sup-maintenance/">рекомендации отдельной большой статьи в блоге</a>. Отдельно надо упомянуть, что встроенный мастер очистки WSUS (Cleanup Wizard) удаляет метаданные <strong>заменённых</strong> обновлений, если они не были <strong>утверждены за последние 30 дней</strong> (а в случае ConfigMgr подавляющая часть обновлений в консоли WSUS остаётся неутверждённой) и <strong>не нужны клиентам</strong> (что в норме также выполняется, т.к. клиенты ConfigMgr по умолчанию не отчитываются WSUS). Поэтому заменённые обновления лучше отклонять вручную - и в <a href="https://blogs.technet.microsoft.com/configurationmgr/2016/01/26/the-complete-guide-to-microsoft-wsus-and-configuration-manager-sup-maintenance/">статье</a> есть ссылка на соответствующий скрипт. Кроме того, ничего не мешает отклонять и ненужные на ваш взгляд обновления: например, для архитектуры ia64 (Itanium) - это уменьшит размер БД WSUS и ускорит процесс сканирования обновлений.

Еще один важный момент, про который мало кто знает до первой прогулки по этим граблям: при деинсталляции последней SUP сайта все обновления в БД ConfigMgr помечаются как устаревшие (то же самое происходит и при снятии галочки категории или продукта – но для части обновлений). Проблема в том, что это массовое изменение CI (а обновления в БД хранятся именно так) в базе данных ConfigMgr вызовет появление тысяч файлов в инбоксе ObjReplMgr.box и будет долго обрабатываться – а если вы используете мультисайтовую иерархию и удалите SUP на высшем уровне, то это произойдет ещё и на всех сайтах. Поэтому я рекомендую всячески избегать деинсталляции SUP, тем более сама по себе "ломается" она редко.

С другой стороны WSUS можно достаточно безопасно переустановить даже не сохраняя БД: ведь при следующем цикле SUP заново пропишет все настройки и запустит синхронизацию. Разумеется, на время отсутствия WSUS вы получите некоторое количество сообщений об ошибках в логах и статусах компонентов SUP WSyncMgr, WCM, WSUSCtrl, а также со стороны клиентов. Кроме того, если Вы не сохраните БД, то клиенты будут вынуждены сделать полное сканирование (помните про 10 Мб трафика на клиента) - но этот вал запросов можно пережить.

Неожиданный момент в ConfigMgr версии до 1806: когда вы удаляете продукт или классификацию в настройках SUP, то соответствующие обновления в консоли ConfigMgr помечаются как истёкшие (expired) и удаляются автоматически - но на WSUS этого не происходит! Поэтому в том случае, когда вы выводите из эксплуатации тот или иной продукт (Windows XP или уже скоро Windows 7),  уделите время и отклоните вручную или скриптом соответствующие обновления в БД WSUS. Будьте осторожны - некоторые обновления применимы к нескольким продуктам! В ConfigMgr 1806 это поведение было исправлено, теперь обновления, удаляемые в ConfigMgr, автоматически отклоняются и на WSUS.
<h2>Продолжение следует</h2>
<a href="https://blogs.technet.microsoft.com/scpferublog/2018/02/27/configmgr-update-management-part-2/">В следующей части</a> мы поговорим о том, как правильно перевести клиентов на получение обновлений с ConfigMgr/SUP. Следите за пополнением записей в этом блоге и спасибо за внимание!]]></content:encoded>
    </item>
    <item>
      <title>Коллекции и скорость их работы</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/cm_collections_and_speed</link>
      <pubDate>Sun, 21 May 2017 07:24:39 GMT</pubDate>
      <dc:creator><![CDATA[Andrey Borzenko -MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=755</guid>
      <description><![CDATA[&nbsp;

Коллекции являются одним из ключевых элементов Configuration Manager. Приложения,...]]></description>
      <content:encoded><![CDATA[&nbsp;

<span>Коллекции являются одним из ключевых элементов </span><span>Configuration Manager. </span><span>Приложения, обновления, конфигурационные элементы, политики - все это назначается на коллекции, и если с коллекциями начались проблемы, вы это быстро почувствуете. </span>

&nbsp;

<span>Если вы нашли эту статью, пытаясь срочно разрешить уже возникшие проблемы</span> <span>со скоростью работы коллекций, переходите сразу к разделу "Устранение проблем" в конце текста. </span>

<!--more-->

<span>Проблемы с коллекциями, по большей части, создают сами администраторы </span><span>Configuration Manager</span><span>, когда пишут правила членства. В особо тяжелых случаях, неудачное правило-запрос может остановить </span><span>SQL </span><span>серверы нескольких первичных сайтов иерархии. Эту статью я решил написать как раз после того, как я увидел такое у одного заказчика . Статья ориентирована на администраторов крупных или сильно нагруженных иерархий с несколькими сайтами и большим количеством клиентов. Если система маленькая, проблем, скорее всего, не возникнет.</span>

&nbsp;

<span>Представьте себе ситуацию, когда на всех серверах </span><span>SQL </span><span>первичных сайтов иерархии начинает расти </span><span>tempdb.ldf.</span><span> Файл журнала </span><span>Temp DB </span><span>может расти только если какая-то транзакция не завершается, и продолжает собирать данные. Одновременно с этим, администраторы назначений жалуются, что все коллекции "подвисли" с "песочными часами", и они не могут работать. Файл </span><span>tempdb.ldf </span><span>достигает размера уже 170 ГБ, место на диске с </span><span>tempdb </span><span>подходит к концу, </span><span>SQL </span><span>может встать на паузу. Если перезапустить </span><span>SQL, </span><span>процесс повторяется, место снова начинает заканчиваться. </span>

&nbsp;

<span>Посмотреть в чём дело оказалось несложно, и об этом мы поговорим ниже. Была найдена коллекция, которая "вешала" </span><span>Collection Evaluator'</span><span>ы</span> <span>и нагружала все сервера </span><span>SQL</span><span> первичных сайтов иерархии.</span>

<span>Вот её, вроде как ничем не примечательный, </span><span>WQL </span><span>запрос:</span>

&nbsp;
<pre style="padding-left: 30px">select SMS_R_SYSTEM.ItemKey,
 SMS_R_SYSTEM.DiscArchKey,
 SMS_R_SYSTEM.Name0,
 SMS_R_SYSTEM.SMS_Unique_Identifier0,
 SMS_R_SYSTEM.Resource_Domain_OR_Workgr0,
 SMS_R_SYSTEM.Client0
 from vSMS_R_System AS SMS_R_System
 INNER JOIN VB_SCCM_Programs_DATA AS SMS_G_System_SCCM_Programs
 ON SMS_G_System_SCCM_Programs.MachineID = SMS_R_System.ItemKey
 INNER JOIN vSMS_G_System_SoftwareFile AS SMS_G_System_SoftwareFile
 ON SMS_G_System_SoftwareFile.ClientId = SMS_R_System.ItemKey
 where (SMS_G_System_SoftwareFile.FileName = N'PATCHSET13.dll'
 OR SMS_G_System_SCCM_Programs.PkgID00 = N'<span>PR1</span><span>0028A' OR SMS_G_System_SCCM_Programs.PkgID00 = N'PR20028A'))</span></pre>
&nbsp;

<span>В среде заказчика (</span><span>2</span><span>60 тысяч клиентов</span><span>) </span><span>запрос при своем выполнении "разносил" </span><span>tempdb.ldf </span><span>до 170+ ГБ, и не завершался.</span>

&nbsp;

<span>Нюанс в том, что в запросе берутся все записи о компьютерах из представления </span><span>v_R_System</span><span>, и все файлы на этих компьютерах из </span><span>v_GS_SoftwareFile</span><span>,</span> <span>для каждого компьютера. </span><span>v_GS_SoftwareFile </span><span>содержит данные </span><span>Software Inventory, </span><span>и в БД заказчика занимает объем 35 гигабайт. К этому добавляется</span> <span>представление </span><span>SCCM_Programs</span><span> из расширенной инвентаризации, содержащие перечень выполнявшихся на каждом клиенте пакетов и программ из реестра. Проще говоря, количество строк в одном представлении умножается на количество строк в остальных представлениях, и это ещё раз умножается на следующие представления. В комплекте идут два оператора </span><span>'Or', </span><span>что тоже сказывается на скорости запроса и объеме обрабатываемых данных</span><span>.</span>

&nbsp;

<span>На выходе запрос выдавал десятки, а может и сотни миллионов строк, и мы не стали дожидаться его завершения. Ситуацию удалось исправить только сделав так, что все критерии в секции </span><span>OR </span><span>стали отдельными правилами этой коллекции, и обрабатывались отдельно. Такая коллекция наполнялась быстро и правильно.</span>

<span> </span>

<b>Как работают коллекции</b>

<span>Прежде чем решать проблемы с коллекциями, нужно знать в общих чертах, как они работают. Представим это на примере иерархии из </span><span>CAS </span><span>и нескольких </span><span>Primary </span><span>сайтов</span> <span>и процесса администрирования</span><span>. </span><span>В этой статье мы не рассматриваем </span><span>ConfigMgr 2007</span><span> и говорим лишь о последних версиях продукта.</span>

&nbsp;
<ol>
 	<li>Администратор, подключившись консолью к CAS, создает новую коллекцию или изменяет уже имеющуюся. Он создает Collection Query Rule на языке WQL, которое по какому-то признаку отбирает компьютеры в эту коллекцию. Коллекция теперь отображается в консоли с "песочными часами", так как ждет обновления.</li>
 	<li>Через механизм DRS (Data Replication Service, репликация на основе собственного кода Configuration Manager в SQL Service Broker) эта коллекция попадает в БД других первичных сайтов. Коллекции глобальны, и попадают на все первичные сайты, где бы в иерархии они ни были бы созданы, то есть, если администратор подключается консолью к перичному сайту, и создает коллекцию "там", она все равно попадает на CAS, и реплицируется на остальную иерархию. В этом случае процесс удлиняется на один шаг (Pri &gt; CAS &gt; Вся иерархия), поэтому работать все же рекомендуется с CAS (именно по этому он его назвали "Центральный административный сайт").</li>
 	<li>Компонент SMS_COLLECTION_EVALUATOR (Colleval) посредством триггеров в БД и служебных файлов в инбоксе colleval.box на каждом первичном сайте получает задание на пересчет правил членства нашей коллекции, и помещает его в один из своих пяти потоков-очередей (подробнее об этих потоках написано ниже). Если в очереди есть другие коллекции, то наша коллекция ожидает, когда обработаются те. За нашей коллекцией также может собраться очередь, пока членство в ней вычисляется. На центральном сайте компонент SMS_COLLECTION_EVALUATOR не присутствует, его там нет.</li>
 	<li>Опять-таки на каждом первичном сайте, Colleval на сервере SQL выполняет запрос, который написал администратор в начале нашего процесса, но конвертированный из WQL в язык T-SQL. Это ключевой момент. Скорость обработки этого запроса - главное, что оказывает влияние на работу коллекций. Пока наш запрос вычисляется на сервере, другие коллекции ждут с "песочными часами". Эту активность можно наблюдать в логе Colleval.log (включите повышенную детальность логов и SQL логирование в реестре, если хотите видеть больше), в SQL Management Studio в разделе Activity Monitor, в продвинутом случае - SQL Profiler. В работе Colleval задействована также папка инбоксов- Inbox\Colleval.box.</li>
 	<li>Когда членство в коллекции определено, с каждого сайта список машин через DRS посылается на CAS. Как только все первичные сайты пришлют свою часть информации, коллекция на CAS наполняется, "песочные часы" снимаются, администратор видит список компьютеров, а на первичных сайтах формируются политики из назначений, которые администратор поставил на эту коллекцию. Если на каком-то сайте линк репликации работает плохо, или SQL сервер не справляется с нагрузкой, коллекции могут "подвиснуть", в этом один из многих недостатков иерархии из нескольких первичных сайтов и CAS.</li>
</ol>
&nbsp;

<span>Таким образом мы видим, что созданные самостоятельно коллекции - это фактически код, который самостоятельно создает администратор, и который выполняется в </span><span>SQL. </span><span>Запросы </span><span>WQL </span><span>система автоматически транслирует в язык запросов </span><span>SQL. </span><span>Сам транслированный в </span><span>T-SQL </span><span>запрос, как он пойдёт к базе данных, вы можете оценить в таблице </span><span>Collection_Rules_SQL. </span>

&nbsp;

<span>Если коллекций много, и написаны запросы неоптимально, "тормозит" написанный код, а не сам </span><span>Configuration Manager. </span><span>Если система большая, не стоит ждать работы в реальном времени, обновление коллекций может занимать от 10 минут до получаса и даже больше. Администраторы сами создают и должны контролировать нагрузку, то есть количество и "тяжесть" коллекций, ресурсы серверов </span><span>SQL</span><span>, которые не бесконечны. </span>

&nbsp;

<span>Если коллекций несколько тысяч, то даже когда запросы в них не очень медленные, все равно может появиться задержка с обновлением. Это зависит от расписания обновления коллекций (вкладка </span><span>Properties &gt; Membership Rules).</span><span> Когда администраторы выставляют слишком частое расписание, отдельные коллекции могут начинать обновляться раньше, чем заканчивает просчитываться предыдущий круг. Возникает очередь, и мы опять видим "песочные часы". Как этого избежать - в разделе с рекомендациями по работе с коллекциями.</span>

&nbsp;

Подытожим - скорость обновления коллекций зависит от следующих факторов:

&nbsp;
<ul>
 	<li>Качество WQL запросов в правилах коллекций</li>
 	<li>Количество коллекций и частота их обновления по расписанию</li>
 	<li>Ресурсы и быстродействие серверов SQL</li>
 	<li>Объем данных, из которых идет выборка</li>
 	<li>Своевременное обслуживание БД (индексы, статистика), которое штатной Mantenance Task не обеспечивается</li>
 	<li>Корректная работа межсайтовой репликации с первичными сайтами, если их несколько и есть CAS. Если с одним из сайтов линк отказал, коллекции могут оставаться в состоянии обновления</li>
</ul>
&nbsp;
<h4></h4>
<h4>Потоки и работа SMS_COLLECTION_EVALUATOR</h4>
<span>По сравнению с </span><span>Configuration Manager 2007, </span><span>в современных версиях продукта </span><span>Colleval </span><span>работает в несколько потоков. Разные виды обновления коллекций выполняются в разных потоках, это действительно важно знать, если нужно разобраться, почему плохо обновляются коллекции.</span>

<span>Colleval </span><span>имеет четыре "основных" потока и один вспомогательный. Каждый поток является, по сути, отдельной очередью. Работу потоков можно наблюдать в логе </span><span>colleval.log </span><span>и дополнительной утилите </span><span>CEViewer (</span><span>часть</span><span> Configuration Manager 2012 R2 Toolkit)</span><span> . </span>

Посмотрим, за что каждый из них отвечает:

&nbsp;
<ul>
 	<li><span><span style="text-decoration: underline">Primary</span> </span><span>(также известен в </span><span>colleval.log </span><span>как </span><span>Full)- </span><span>отвечает за</span><span> Full Collection Update </span><span>по расписанию, установленному в свойствах коллекции. </span></li>
 	<li><span><span style="text-decoration: underline">Express</span> (Incremental)</span><span> - выполняет инкрементальное обновление тех коллекций, где оно включено. </span></li>
 	<li><span><span style="text-decoration: underline">Manual</span> (</span><span>обозначен как </span><span>Single)</span><span> - здесь обрабатываются коллекции, на которых администратор выполнил </span><span>Update Collection Membership. </span><span>В </span><span>Manual </span><span>попадают коллекции, у которых нет зависимостей. </span></li>
 	<li><span style="text-decoration: underline">Auxiliary</span><span> является дочерним потоком </span><span>Manual, </span><span>и обрабатывает зависимости обновляемых вручную коллекций.</span></li>
 	<li><span><span style="text-decoration: underline">New</span> - Для новых коллекций есть отдельный выделенный поток. С</span><span>юда попадают только что созданные коллекции, которые сразу же начинают просчитываться. </span></li>
</ul>
<h4><span>Incremental Update</span></h4>
Инкрементальные обновления коллекции можно включить, поставив соответствующую отметку в ее свойствах. Термин "инкрементальный" говорит нам о том, что выборка будет производиться только из тех записей, которые изменились в таблицах, на которые направлено правило коллекции. Это позволит делать выборку не из десятков миллионов строк, а лишь из тысяч изменившихся, и сэкономить время обновления коллекции.

Как это реализовано?

<span lang="ru">На многих таблицах, содержащих данные клиентов мы можем найти триггер </span><span lang="en-US">trCollTrack</span><span lang="ru">_имя_таблицы. Когда вы создаете какой-нибудь новый класс инвентаризации, триггер также появляется там. Триггер срабатывает, когда какие-то записи в таблице меняются, и помечает их для выборки инкрементальным обновлением коллекций, если у вас есть какие-то запросы, ориентированные на эту таблицу. </span>

<span lang="ru">Обратите внимание, что на таблицах с данными </span><span lang="en-US">CI Compliance </span><span lang="ru">нет таких триггеров, и инкрементальные обновление там не работает.
</span>

Частота инкрементального обновления коллекций задается в свойствах сайта, и влияет на все инкрементальные коллекции. По умолчанию эта частота - раз в 5 минут. Старайтесь, чтобы количество коллекций со включенным инкрементальным обновлением не превышало 200.

&nbsp;
<h4>Как работает расписание?</h4>
<span lang="ru">Как известно, начиная с </span><span lang="en-US">Configuration Manager 2012, </span><span lang="ru">любая коллекция должна быть ограничена (т.е. делать выборку из) какой-то коллекцией. В итоге, все иерархическое дерево коллекций компьютеров у вас ограничено </span><span lang="en-US">All Systems. </span><span lang="ru">Вы можете иметь где-то расписание обновления коллекций, или нет, но каждая ваша коллекция будет обновляться хотя бы раз в сутки, а именно в 4 часа ночи. Именно в это время выполняется </span><span lang="en-US">Full Update </span><span lang="ru">коллекции </span><span lang="en-US">All Systems, </span><span lang="ru">который вызывает каскад полного пересчета всех запросов каждой коллекции в иерархии. И это плавно подводит нас к теме цепочек зависимости коллекций друг от друга.</span>
<h4>Цепочки обновления коллекций и зависимости</h4>
Как известно, любые созданные нами коллекции должны быть ограничены какой-то другой коллекцией, хотя бы All Systems. Они также могут исключать членов другой коллекции (Exclude Collection) или включать их (Include Collection).

Возьмем <span style="text-decoration: underline">Коллекцию А</span>, и ограничим ее <span style="text-decoration: underline">All Systems </span>(хоть это и не рекомендуется - для наглядности). Включим (Include rule) в нее <span style="text-decoration: underline">Коллекцию B</span>. Исключим (Exclude Rule) <span style="text-decoration: underline">Коллекцию С</span>.

По логике SMS_COLECTION_EVALUATOR, теперь наша <span style="text-decoration: underline">Коллекция А</span> зависит от трех коллекций: <span style="text-decoration: underline">All Systems</span>, <span style="text-decoration: underline">B</span> и <span style="text-decoration: underline">C</span>. Компонент так устроен, что обновление и добавление нового ресурса в любой из этих коллекций вызовет обновление нашей <span style="text-decoration: underline">Коллекции А</span>.

В 4 часа ночи <span style="text-decoration: underline">All Systems</span> выполняет full update, и если членство в ней меняется, то <span style="text-decoration: underline">Коллекция А</span> тоже будет (как и все коллекции вообще - All Systems же). Если в All Systems не произошло изменений, то в 4 ночи обновления не произойдет.

Если на <span style="text-decoration: underline">Коллекции B</span> Full Update происходит каждый час - и <span style="text-decoration: underline">Коллекция А</span> будет обновляться каждый час, вне зависимости от расписания.

Если на <span style="text-decoration: underline">Коллекции А</span> включено инкрементальное обновление, она будет обновляться так же вслед за теми из своих зависимостей, где тоже включено инкрементальное обновление, и наоборот.

Вы можете наблюдать процесс построения цепочек или таблиц зависимости (Graph) в логе Colleval.log. На скриншоте видно, что после добавления Direct Rule пошли обновляться коллекции, ограниченные этой коллекцией, включающие  либо исключающие ее.

<a href="https://msdnshared.blob.core.windows.net/media/2017/05/Graph1.png"><img width="680" height="61" class="alignnone wp-image-795 size-full" src="https://msdnshared.blob.core.windows.net/media/2017/05/Graph1.png" /></a>

Чем больше у коллекции зависимостей, тем дольше она может обрабатываться.

&nbsp;
<h4><span lang="ru">Рекомендации по работе с </span><span lang="ru">коллекциями </span></h4>
<span lang="ru">Документация к продукту содержит рекомендацию не включать инкрементальное обновление более чем на 200 коллекциях.</span><span lang="en-US"> </span><span lang="ru">Помимо этого, существуют ещё нигде не описанные правила из жизни, которые могут помочь вам ускорить работу коллекций.</span><span lang="en-US"> </span><span lang="ru">Советы ниже пригодятся предприятиям с количеством клиентов 10 000 и более. При малых нагрузках оптимизировать коллекции не так необходимо.</span>

<strong><span lang="ru">Будьте осторожны с </span><span lang="en-US">Direct Rule</span><span lang="ru"> </span></strong><span lang="en-US">- </span><span lang="ru">каждый раз, когда вы добавляете прямым правилом компьютер в коллекцию, это вызывает внеочередной </span><span lang="en-US">Full Update </span><span lang="ru">данной коллекции, и всех коллекций, которые ограничены ей. То есть целый каскад полного обновления.</span><span lang="en-US"> </span><span lang="ru">Я много слышал нескольких заказчиках в Европе, которые используют </span><span lang="en-US">Direct Rule </span><span lang="ru">в своем ПО автоматизации сервис деска, и которые испытывали проблемы с производительностью от десятков тысяч прямых правил.</span>

<span lang="ru">Преимущества </span><span lang="en-US">Query Rule </span><span lang="ru">перед </span><span lang="en-US">Direct Rule:</span>
<ul>
 	<li><span lang="ru">Возможность обновляться по расписанию, и динамически добавлять</span><span lang="en-US">/</span><span lang="ru">удалять членов без вмешательства администратора.</span></li>
 	<li><span lang="en-US">Query Rule </span><span lang="ru">может обновляться по расписанию, </span><span lang="en-US">Direct Rule</span><span lang="ru"> же</span><span lang="en-US"> </span><span lang="ru">остается привязанным к </span><span lang="en-US">Resource ID </span><span lang="ru">добавленной машины навечно.</span></li>
 	<li>Не требует обслуживания (написал запрос и забыл)</li>
</ul>
<span lang="ru"><strong>Отдавайте себе отчет о стоимости запросов</strong>, содержащих оператор </span><span lang="en-US">LIKE</span><span lang="ru"> - используете его только где необходимо.</span>
<p lang="en-US"><span lang="ru">Поменьше используйте </span><span lang="en-US">LIKE </span><span lang="ru">обрамленный двумя символами </span><span lang="en-US">'%', </span><span lang="ru">например </span><span lang="en-US">Where SoftwareName LIKE '%Office%'. </span><span lang="ru">Такой запрос не использует преимущества индексов на полях, и проходит через каждую строчку в столбце, что может быть в десятки раз медленней.</span></p>
<span lang="ru">Старайтесь еще меньше использовать </span><span lang="en-US">NOT LIKE.</span><span lang="ru"> С точки зрения производительности, это то же самое, что и </span><span lang="en-US">LIKE, </span><span lang="ru">только еще медленней.</span>

<span><strong>Стройте коллекции по индексируемым полям таблиц</strong>. Запросы по индексированным полям работают в </span> <span>10-15 раз быстрей чем запросы по "обычным" полям. Когда пишете запрос, посмотрите, нет ли подходящего индексированного поля.</span>

Как выяснить, на каких полях существуют индексы?

<span>Выполните следующий запрос, чтобы получить список индексированных полей в таблицах БД </span><span>Configuration Manager:</span>
<pre>SELECT
     TableName = t.name,
     IndexName = ind.name,
     IndexId = ind.index_id,
     ColumnId = ic.index_column_id,
     ColumnName = col.name,
     ind.*,
     ic.*,
     col.*
FROM
     sys.indexes ind
INNER JOIN
     sys.index_columns ic ON ind.object_id = ic.object_id and ind.index_id = ic.index_id
INNER JOIN
     sys.columns col ON ic.object_id = col.object_id and ic.column_id = col.column_id
INNER JOIN
     sys.tables t ON ind.object_id = t.object_id
WHERE
     ind.is_primary_key = 0
     AND ind.is_unique = 0
     AND ind.is_unique_constraint = 0
     AND t.is_ms_shipped = 0
ORDER BY
     t.name, ind.name, ind.index_id, ic.index_column_id;</pre>
&nbsp;

<span>Практический пример, как можно сделать правило коллекции медленным и быстрым способом</span><span>.</span>

<span>Представим, что мы ищем машины с </span><span>Microsoft Office Professional Plus 2013</span><span>, и решили использовать представление </span><span>v_gs_installed_software. </span><span>В этом представлении есть два поля с названием ПО, одно из которых индексировано, другое - нет.</span>

&nbsp;

Медленный запрос, длящийся 100 секунд:

&nbsp;
<pre>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_INSTALLED_SOFTWARE on SMS_G_System_INSTALLED_SOFTWARE.ResourceId = SMS_R_System.ResourceId where SMS_G_System_INSTALLED_SOFTWARE.<strong>ARPDisplayName</strong> = "Microsoft Office Professional Plus 2013"</pre>
&nbsp;

Быстрый запрос на 6 секунд:

&nbsp;
<pre>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_INSTALLED_SOFTWARE on SMS_G_System_INSTALLED_SOFTWARE.ResourceId = SMS_R_System.ResourceId where SMS_G_System_INSTALLED_SOFTWARE.<strong>ProductName</strong> = "Microsoft Office Professional Plus 2013"</pre>
&nbsp;

Таким образом, найдя поле с индексом, мы ускорили время обработки коллекции в 15 раз. Попробуйте посмотреть теперь, что можно сделать с вашими коллекциями?

Таким же образом возможно ускорить и работу отчетов.

&nbsp;

<strong>Найдите коллекции с неоптимальными запросами.</strong> Как это сделать?

Выполните следующий запрос:
<pre>(select vc.SiteID as [CollID],
vc.CollectionName, 'Not_Like' as Category, s.SQL
from v_Collections vc 
inner join Collection_Rules_SQL s
on vc.CollectionID=s.CollectionID
where
s.SQL like '%not like%')
UNION
(select vc.SiteID as [CollID],
vc.CollectionName,
'Not_Equal'
as CAT,
s.SQL
from v_Collections vc
inner join Collection_Rules_SQL s
on vc.CollectionID=s.CollectionID
where s.SQL like '%&lt;&gt;%')</pre>
&nbsp;

&nbsp;

<span lang="en-US"><a href="https://msdnshared.blob.core.windows.net/media/2017/05/q2result.bmp"><img width="759" height="590" class="alignnone size-full wp-image-805" alt="q2result" src="https://msdnshared.blob.core.windows.net/media/2017/05/q2result.bmp" /></a></span>

&nbsp;

<span><strong>В случае "тяжелых" запросов, переносите нагрузку на клиентов</strong>, используя </span><span>Compliance Settings</span><span>.</span>

<span>Сделайте </span><span>Configuration Baseline </span><span>с набором </span><span>CI</span><span>, содержащими сложные вычислениямя, например, "если </span><span>IP </span><span>компьютера такой-то, и он содержит такой-то файл, при этом у него есть такая-то служба и запись в реестре, то он будет соответствовать</span> <span>этому базовому шаблону". Стройте коллекции уже на основе бинарного признака </span><span>Compliant = Yes/No</span><span> относительно этого шаблона, и коллекции будут выполняться моментально. </span><span style="text-decoration: underline">Ещё раз отметим, что не стоит включать такие коллекции для инкрементального обновления - таблицы, связанные с CI, не содержат триггеров механизма инкрементальных обновлений</span><span><span style="text-decoration: underline">.</span> Вам придется полагаться на полное расписание для обновления членства. Тем не менее, подсчет соответствующих или нет машин должен происходить быстро, и на загружать сервер.</span>

&nbsp;
<h4>Устранение проблем с работой коллекций</h4>
<span lang="ru">Обычно проблемы с коллекциями начинают выражаться в том, что множество колекций в консоли повисает с "песочными часами". Правила создаются, но ресурсы в коллекции не попадают.</span><span lang="en-US"> </span><span lang="ru">Либо коллекций слишком много и они слишком часто обновляются, либо существует одна или несколько коллекций с неудачными правилами-запросами.</span>

&nbsp;

Поиск и устранение проблем с производительностью можно свести к одному алгоритму:
<ol>
 	<li><strong><span lang="ru">Проверьте межсайтовую репликацию</span></strong><span lang="ru"><strong>,</strong> если у вас есть </span><span lang="en-US">CAS. </span><span lang="ru">Если один из сайтов испытывает проблемы с </span><span lang="en-US">SQL</span><span lang="ru"> или связью с иерархией, коллекции на </span><span lang="en-US">CAS </span><span lang="ru"><span lang="ru">могут прекратить обновляться, пока проблема не будет устранена.</span></span></li>
 	<li><strong><span lang="ru">Проверьте нагрузку на серверы </span><span lang="en-US">SQL </span></strong><span lang="ru">всех</span><span lang="en-US"> </span><span lang="ru">первичных сайтов</span><span lang="ru">, прежде всего по процессорам, записи на диск с БД, памятью. Если серверы с трудом справляются с нагрузкой, коллекции будут работать медленно.</span></li>
 	<li><span lang="ru"><strong>Почитайте логи</strong> </span><span lang="en-US">&lt;ConfigMgr&gt;\Logs\colleval.log</span><span lang="ru"> и статусные сообщения нашего компонента в консоли (</span><span lang="en-US">Monitoring &gt;</span><span lang="ru"> </span><span lang="en-US">System Status &gt; Component Status &gt; SMS_COLLECTION_EVALUATOR</span><span lang="ru">) на</span><span lang="en-US"> </span><span lang="ru">наиболее занятых первичных сайтах, можно начать с одного. Есть ли в логах ошибки в работе с </span><span lang="en-US">SQL </span><span lang="ru">сервером? Проблемы со связью, записью в таблицы? Идёт ли работа в </span><span lang="en-US">colleval.log? </span><span lang="ru">Если ошибки с </span><span lang="en-US">SQL </span><span lang="ru">есть, необходимо устранить их, дело не в коллекциях. </span><span>Установите фильтр </span><span>cmtrace.exe (</span><span>вы же ей открывали </span><span>colleval.log</span><span>?) на слово </span><span>seconds. </span><span>Вы увидите в реальном времени, сколько секунд уходит на обработку правил.</span> <span>Если нормальная работа в </span><span>colleval.log </span><span>видна, переходите к следующему пункту.</span> <span>Помните, что все потоки </span><span>Colleval </span><span>пишут в этот лог, и если один из них застрял на определенной коллекции, лог все равно не встанет колом, а будет обновляться и дальше от других потоков. Обновляющийся лог это не показатель безпроблемной работы коллекций.</span><span lang="ru">Обратите внимание, что сообщения в логе </span><span lang="en-US">"Failed to manage all files in inbox. Will retry on next processing cycle" </span><span lang="ru">не являются проблемой и не мешают работе системы - это косметический дефект, возникающий когда коллекцию создали и быстро удалили, а файлы-триггеры в инбоксе остались.</span><span lang="en-US"> </span><span lang="ru">Старые файлы можно удалить вручную, это не навредит.</span><span lang="ru">В случае необходимости, можно увеличить максимальный размер файла лога, и включить </span><span lang="en-US">SQL </span><span lang="ru">логирование через реестр на сервере сайта.</span></li>
 	<li><strong><span lang="ru">Запустите </span><span lang="en-US">CEViewer</span></strong><span lang="ru"> на одном или нескольких первичных сайтах. Предпочтение отдайте тому сайту, где больше всего клиентов, либо у которого самый медленный </span><span lang="en-US">SQL</span><span lang="ru"> - там запросы идут наиболее тяжело.</span><span lang="en-US"> </span><span lang="ru">Оцените общую ситуацию. Закладка </span><span lang="en-US">All Queues </span><span lang="ru">даст представление о том, насколько быстро обновлятся коллекции, какова очередь, что вообще происходит. Что происходит в </span><span lang="en-US">Running Evaluations? </span><span lang="ru">Двигается ли очередь?</span><span lang="ru">Зайдите во вкладки с разными видами очередей (это потоки, которые описаны в этой статье выше) и проверьте время обновления коллекций в секундах. Если у вас есть коллекции, обновляющиеся больше 60-100 секунд, это повод крепко задуматься над их оптимизацией.</span><span lang="en-US"> </span><span lang="ru">Есть вероятность, что ваши коллекции "висят" из-за того, что накопилась критическая масса долго выполняющихся правил. Если это так, посмотрите раздел "Рекомендации по построению коллекций", и попробуйте оптимизировать свои правила. </span>Если проблема возникла внезапно и раньше задержек не было, скорее всего кто-то создал долго выполняющийся запрос, который мы сможем выявить в следующем шаге.</li>
 	<li><strong><span lang="ru">Откройте </span><span lang="en-US">SQL Management Studio</span></strong><span lang="ru"> и выполните на </span><span lang="en-US">SQL </span><span lang="ru">первичного сайта запрос, который покажет процессы SMS_COLLECTION_EVALUATOR, работающие или приостановленные прямо сейчас:</span>
<pre>SELECT sess.program_name,
sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
Left join sys.dm_exec_sessions sess on sess.session_id = req.session_id

CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
WHERE sess.program_name like 'SMS_COLLECTION%'
ORDER BY req.total_elapsed_time DESC</pre>
<span lang="ru">Запросы выводятся в порядке времени выполнения (поле </span><span lang="en-US">total_elapsed_time). </span><span lang="ru">В поле </span><span lang="en-US">SQLText </span><span lang="ru">мы видим текст этих запросов. Один из них, вероятно, является "тяжелым" запросом из вашей коллекции. Может так случиться, что этот запрос никогда не завершается, поэтому в предыдущем шаге, в </span><span lang="en-US">CEViewer </span><span lang="ru">вы его времени выполнения никогда не увидете. Именно этот случай произошел в начале статьи. Если запрос какой-то коллекции выполняется весьма долго, то в </span><span lang="en-US">colleval.log </span><span lang="ru">вы этого также можете не увидеть. Лог будет бежать дальше, так как другие коллекции в других потоках будут считаться нормально. Например, инкрементальное обновление коллекций будет работать, в то время как обсчет новых коллекций будет введен в ступор вашим запросом.</span>
<p lang="en-US"> <span lang="ru">Посмотрите</span><span lang="en-US"> </span><span lang="ru">текст запроса в поле TEXT</span><span lang="ru">, найдите в нём откуда идет выборка данных (после оператора </span><span lang="en-US">FROM). </span></p>
<p lang="en-US"><span lang="en-US"> <a href="https://msdnshared.blob.core.windows.net/media/2017/05/processes.result.bmp"><img width="869" height="164" class="alignnone size-full wp-image-815" alt="processes-result" src="https://msdnshared.blob.core.windows.net/media/2017/05/processes.result.bmp" /></a></span></p>
<span lang="ru"></span>

<span lang="ru"> </span>

&nbsp;

<span lang="ru">Скопируйте названия этих таблиц</span><span lang="en-US"> </span><span lang="ru">или небольшой кусок запроса вокруг них, выполните новый запрос, чтобы найти проблемную коллекцию</span>
<pre>select * from v_Collections
 where CollectionID in
 (select CollectionID from collection_rules where collectionID in
 (select collectionid from collection_rules_sql
 where sql like‘%ЧАСТЬ ТЕКСТА ПРОБЛЕМНОГО ЗАПРОСА%’
 ))</pre>
<span>В результате вы найдете проблемную коллекцию, и сможете приступить к её оптимизации. Если этот конкретный запрос прямо сейчас в статусе </span><span>Running</span><span> в списке задач -</span>
<span></span><strong>Зайдите на сервер SQL </strong><span>и проверьте размер файлов </span><span>TempDB</span><span>, </span><span>tempdb.ldf. </span><span>Растут ли эти файлы прямо сейчас? Если рост некотролируемо продолжается, попробуйте изменить запрос коллекции на тот, что будет работать нормально, или просто удалив неудачное правило.Затем на ваших </span><span>SQL </span><span>серверах в </span><span>SQL Management Studio</span><span> зайдите в </span><span>Activity Monitor (</span><span>прав. кнопка мыши на сервер, </span><span>Activity Monitor)</span><span>, далее</span><span> Processes</span><span>, и завершите процесс от </span><span>SMS_COLECTION_EVALUATOR</span><span> с вашим неудачным запросом</span><span>.</span></li>
</ol>
&nbsp;

Вот, собственно, и всё, что я пока могу рассказать вам о работе с коллекциями. Если у уважаемых читателей есть какие-то дополнения или комментарии, мы будем рады их прочитать!

&nbsp;

&nbsp;]]></content:encoded>
    </item>
    <item>
      <title>Типичные ошибки администраторов Configuration Manager и лучшие практики: часть 2</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/typical-admin-mistakes-2</link>
      <pubDate>Thu, 16 Feb 2017 13:11:49 GMT</pubDate>
      <dc:creator><![CDATA[Pavel Yurenev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=725</guid>
      <description><![CDATA[Во второй части статьи мы рассмотрим опасности, которые возникают при установке агентов...]]></description>
      <content:encoded><![CDATA[Во второй части статьи мы рассмотрим опасности, которые возникают при установке агентов Configuration Manager (ConfigMgr) на терминальные серверы, а также дадим несколько общих рекомендаций по обслуживанию инфраструктуры ConfigMgr, в том числе важные замечания о том, что делать не надо. Первая часть статьи опубликована <a href="https://blogs.technet.microsoft.com/scpferublog/2017/01/18/typical-admin-mistakes-1/">здесь</a>.
<h1>Терминальные серверы:</h1>
Данный вид серверов я выделяю в отдельный класс, т.к. они совмещают в себе свойства как сервера, так и рабочей станции – и поэтому требуют отдельного подхода с точки зрения ConfigMgr. Ниже я опишу сценарии, которые применимы именно к этому классу управляемых устройств.
<h2>Пользовательские политики</h2>
ConfigMgr начиная с 2012 позволяет таргетировать ПО на пользователя или группу, а также управлять некоторыми пользовательскими настройками (являясь своего рода заменой Active Directory для недоменных и мобильных устройств). Однако если с обычным устройством обычно работают единицы пользователей, то с терминальным сервером их количество заведомо больше.

Дизайн продукта таков, что если вы включите пользовательскую политику через клиентские настройки, то агент будет хранить в WMI политику для ВСЕХ пользователей, которые логинились на машину. Поэтому на терминальных серверах с большим числом пользователей включение пользовательской политики приводит к раздуванию размеров репозитория WMI до гигабайт и, как следствие замедлению работы WMI и всего того, что опирается на него. Усугубляется проблема в том случае, если в качестве терминального сервера используется непропатченная ОС Windows 2008 R2, для которой известно много проблем WMI (один из хороших списков есть <a href="https://support.microsoft.com/en-us/kb/2591403">в базе знаний Microsoft</a>).

Также у репозитория WMI есть лимит размера 4 Гб, который нельзя изменить: при достижении этого размера любое ПО, попытающееся записать что-то в WMI получит ошибку WBEM_E_OUT_OF_DISK_SPACE. При этом какого-либо вменяемого способа уменьшить размер репозитория даже после выключения пользовательской политики не предусмотрено: только полный сброс, что может негативно отозваться на многом установленном ПО.

Поэтому позаботьтесь с самого начала о выделении терминальных серверов в отдельную коллекцию и об отдельной клиентской настройке, развернутой на неё.
<h2>Инвентаризация:</h2>
Про опасность включения инвентаризации ряда классов WMI я уже писал, но для терминальных серверов тоже есть своя специфика.

Описанная ранее инвентаризация процессов классом Win32_Process на терминальном сервере с большой вероятностью приведет к тому, что отчеты инвентаризации будут отвергаться сервером ConfigMgr по причине огромного размера. Однако для этого вида клиентов особую опасность представляет и класс CCM_RecentlyUsedApps – по той же причине обилия запущенных процессов.

Вновь я рекомендую выделить для терминальных серверов отдельную клиентскую настройку с отключенными опасными классами инвентаризации.
<h2>Software Metering</h2>
Малоизвестной особенностью Software Metering является то, что агент ConfigMgr мониторит запуски и завершения <strong>всех процессов</strong> на машине, на которой включена данная функциональность; при этом отчеты агрегируются и отправляются на сервер только для тех, которые задал администратор в консоли. Для терминальных серверов это может приводить к заметному замедлению работы ОС.

Поэтому я рекомендую включать Software Metering только на тех машинах, где это действительно требуется – и не на терминальных серверах.
<h2>Управление пользовательскими профилями</h2>
Относительно малоиспользуемым функционалом ConfigMgr является <a href="https://technet.microsoft.com/en-us/library/jj591610.aspx">управление пользовательскими профилями через механизм Compliance Settings</a>. Для терминальных серверов, как и включение пользовательской политики, включение функционала в клиентских настройках неизбежно приводит к проблемам с производительностью, поэтому убедитесь, что настройка "Enable User Data and Profiles" установлена в "No".
<h1>Общие рекомендации</h1>
В данном разделе я постараюсь описать некоторые важные моменты администрирования ConfigMgr не вошедшие в предыдущие разделы, в том числе не связанные с производительностью.
<h2>Задачи обслуживания сайта</h2>
Каждый сайт по заданному администратором расписанию производит ряд <a href="https://docs.microsoft.com/en-us/sccm/core/servers/manage/reference-for-maintenance-tasks">задач обслуживания</a>. Убедитесь, что эти задачи сконфигурированы и выполняются (последнее, помимо лога и статусных сообщений, можно посмотреть в SQL-представлении vSQL_TaskStatus).

Среди этих задач особенно важны все задачи по очистке БД от устаревших ресурсов (Delete), а также реиндексация БД – без них база данных скоро перестанет работать так быстро, как хотелось бы. Последняя задача также может быть выполнена сторонними средствами, которые кажутся более приемлемыми вашим администраторам SQL.

Кроме того, не забывайте, что вспомогательные роли также требуют своего обслуживания, особенно это касается <a href="https://blogs.technet.microsoft.com/configurationmgr/2016/01/26/the-complete-guide-to-microsoft-wsus-and-configuration-manager-sup-maintenance/">очистки и реиндексации БД WSUS</a>.
<h2>Поддержание базы данных драйверов</h2>
Очередной соблазн начинающего администратора ConfigMgr – добавить в БД все драйверы устройств, которые он сможет найти, тем более диалог импорта способствует этому.

Однако такой подход приводит к целому ряду проблем. Во-первых, ConfigMgr при добавлении драйвера в пакет закачивает в БД контента все, что лежит в папке с драйвером. «Заботливые» производители драйверов могут положить туда маркетинговое видео на 300 мегабайт, и клиенты вашей инфраструктуры будут закачивать и его в процессе развертывания ОС. Поэтому поищите на сайте производителя очищенные от подобных «забот» драйверы или удалите лишнее сами (но на ваш страх и риск). Также многие драйверы (в очищенном виде!) теперь доступны для закачки в <a href="https://www.catalog.update.microsoft.com/">каталоге обновлений Microsoft</a>, причем поддерживается поиск по Plug-n-Play ID устройства.

Во-вторых, исходную папку драйвера лучше не менять: иначе при обновлении пакета с драйверами или загрузочного образа, содержащего драйвер, вы получите ошибку. Продумайте и реализуйте схему хранения драйверов и впредь её придерживаетесь, чтобы избежать этого, а также не удаляйте драйвер из исходной папки пока не удалите его из консоли (папки пакетов драйверов обслуживаются сами).

В третьих, помните о <strong>таймауте 8 минут</strong> при авто-поиске драйверов. Шаг авто-поиска (Auto apply drivers) собирает данные об устройствах в XML и отправляет их на сервер для поиска драйверов. Сервер же выполняет хранимую процедуру в БД SQL и возвращает результаты поиска. В том случае, если в БД слишком много драйверов, база давно не индексировалась или просто производительность SQL недостаточна, то шаг Auto Apply Drivers завершится ошибкой по таймауту – и на этом ваше развертывание ОС закончится, либо продолжится без установленных драйверов. Поэтому отключайте и удаляйте ненужные драйверы, а также пользуйтесь категориями для лимитирования поиска. В качестве временного решения в ConfigMgr 1610 и выше можно пользоваться переменной Task Sequence SMSTSDriverRequestReceiveTimeOut.

Что касается драйверов для загрузочных образов (WinPE): проверьте на сайте производителя оборудования не выложил ли он для них отдельных драйверов в формате INF и без лишних файлов. Например, HP поддерживает <a href="https://ftp.hp.com/pub/caps-softpaq/cmit/HP_WinPE_DriverPack.html">полноценный пакет драйверов для WinPE</a>, причем для всех моделей сразу.
<h2>Патчи, патчи и еще раз патчи</h2>
Больших продуктов без ошибок в коде не бывает и ConfigMgr в этом плане не исключение. Поэтому не забывайте поддерживать его в актуальном состоянии, чтобы при обращении в службу поддержки не получить банальное предложение поставить последнее обновление. Напомню, современные версии ConfigMgr Current Branch умеют обновляться прямо из консоли, для версий же 2012 SP2/R2 SP1 можно установить <a href="https://www.microsoft.com/en-us/download/details.aspx?id=45033">Servicing Extension</a> для консоли. Кроме того, начиная с версии 2012 SP2/R2 SP1 CU1 клиенты <a href="https://blogs.technet.microsoft.com/enterprisemobility/2015/08/04/automatically-updating-the-configuration-manager-client/">умеют автоматически обновляться</a> на последнюю версию, в том числе в процессе переустановки ОС.

Однако ошибки бывают не только в коде ConfigMgr, но и в коде вспомогательных технологий: таких, как WSUS и Windows Update Agent. Поэтому не забывайте про установку последних обновлений как на серверную часть, так и на клиентскую, чтобы избежать таких массовых проблем, как <a href="https://blogs.technet.microsoft.com/configurationmgr/2015/04/15/support-tip-configmgr-2012-update-scan-fails-and-causes-incorrect-compliance-status/">сканирование обновлений на Windows 7 приводит к чрезмерному потреблению ресурсов</a>.

Напомню также про описанные выше проблемы с WMI на Windows Server 2008 R2: они актуальны и для многих других случаев – например, работы точки распространения (Distribution point) на данной ОС.
<h2>Внесение изменений в БД и бэкап снепшотами VM</h2>
В заключение хотел бы указать на две вещи, которые <strong>не надо делать никогда</strong>.

Во-первых, не надо изменять настройки или содержимое БД SQL вручную, даже  если эта рекомендация приведена на нашем <a href="https://social.technet.microsoft.com/Forums/ru-RU/home">Форуме технета</a>. Когда у вас что-то перестанет работать, и вы откроете кейс в поддержке, то инженер вряд ли узнает о том, что вы что-то когда-то поменяли вручную, но решить проблему может быть уже поздно. Общее правило таково: вносите изменения в БД только в том случае, если вы абсолютно уверены в том, что делаете, и сможете это протестировать – или это вам порекомендовал инженер Microsoft. Детально правила поддержки можно почитать <a href="https://support.microsoft.com/en-us/kb/3106512">здесь</a>.

Во-вторых, никогда, никогда не рассчитывайте на снепшот виртуальной машины как бэкап ConfigMgr! Если у вас многосайтовая иерархия, то просто забудьте про это! Нет, никогда, не поддерживается! Даже инженер поддержки скорее всего не возьмется восстановить иерархию после отката виртуальной машины с одним из сайт-серверов в иерархии. Используйте штатный механизм резервного копирования в задачах обслуживания сайта, либо воспользуйтесь <a href="https://docs.microsoft.com/en-us/sccm/protect/understand/backup-and-recovery">инструкциями в официальной статье</a>.
<h1>Заключение</h1>
На этом, пожалуй, я считаю свой долг по информированию администраторов ConfigMgr выполненным. Пользуйтесь продуктом грамотно, и он всегда будет помогать вам в работе.]]></content:encoded>
    </item>
    <item>
      <title>Типичные ошибки администраторов Configuration Manager и лучшие практики: часть 1</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/typical-admin-mistakes-1</link>
      <pubDate>Wed, 18 Jan 2017 14:37:30 GMT</pubDate>
      <dc:creator><![CDATA[Pavel Yurenev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=676</guid>
      <description><![CDATA[В одной из предыдущих статей этого блога мой коллега Андрей Борзенко рассказывал о мерах...]]></description>
      <content:encoded><![CDATA[В одной из предыдущих статей этого блога мой коллега Андрей Борзенко <a href="https://blogs.technet.microsoft.com/scpferublog/2014/04/25/1088-2/">рассказывал о мерах предосторожности</a>, которые позволяют избежать очень неприятных проблем при использовании Configuration Manager (далее ConfigMgr). Однако дизайн продукта таков, что некоторые ошибки администрирования продукта приводят к менее критичным, но все еще болезненным последствиям – вплоть до остановки работы самого сервера ConfigMgr и открытия кейса в поддержке с высоким уровнем срочности.

В данной статье я постараюсь описать несколько потенциально опасных сценариев, избежав которых вы сэкономите как свои время и нервы, так и инженеров поддержки.
<h1>Инвентаризация</h1>
Инвентаризация является одной из базовых частей функционала продукта: чтобы использовать её вам не нужно делать почти ничего, кроме как установить и немного настроить серверную часть, а также развернуть агенты ConfigMgr. Напомню кратко, как работает данный функционал:

1)      Администратор определяет интервал сбора данных и параметры метода инвентаризации (например, собираемые классы WMI для Hardware Inventory) в настройках клиентов.

2)      Клиенты получают эти настройки и с заданным интервалом отправляют на сервер файлы с собранными данными.

3)      В идеальном случае в первый раз отправляется полная инвентаризация, далее же отправляются только дельты.

4)      Сервер хранит в БД как актуальные данные, так и исторические, а также ведет лог изменений.

Однако инвентаризацию можно настроить так, что даже если ваш сервер не перестанет работать, то будет работать заметно медленнее. Ниже я приведу несколько таких настроек.
<h2>Классы WMI, которые просто собирают слишком много данных</h2>
Частой ошибкой администраторов является добавление в настройки инвентаризации таких классов WMI, как <a href="https://msdn.microsoft.com/en-us/library/aa394372(v=vs.85).aspx">Win32_Process</a> и/или <a href="https://msdn.microsoft.com/en-us/library/aa394418(v=vs.85).aspx">Win32_Service</a>. Благая цель инвентаризации процессов и сервисов на клиентских машинах, разумеется, будет достигнута, однако произойдет это ценой раздувания каждого отчета инвентаризации в отдельности и объема собранных данных в БД в целом. С очень большой вероятностью в данных, собираемых этими классами, что-то поменяется к следующему циклу инвентаризации (например, PID процесса или вообще появится новый процесс), а значит будет отправлен дельта-отчет. Сервер, обработав отчет, заботливо заархивирует предыдущие данные и обновит актуальные в базе данных.

Характерным признаком бездумного добавления таких классов WMI является огромный размер (как по количеству рядов, так по объему места на диске) таблиц в БД, отвечающих за хранение данных инвентаризации (их имена обычно написаны в верхнем регистре и имеют суффиксы _DATA и _HIST). Данную статистику вы можете посмотреть, запустив стандартный отчет “Disk Usage by Top Tables” в SQL Server Management Studio.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/SQL_console.png"><img width="855" height="723" class="alignnone wp-image-705 size-full" alt="SQL Console" src="https://msdnshared.blob.core.windows.net/media/2017/01/SQL_console.png" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/SQL_Report.png"><img width="724" height="178" class="alignnone wp-image-715 size-full" alt="DB space report " src="https://msdnshared.blob.core.windows.net/media/2017/01/SQL_Report.png" /></a>

Особняком стоит класс CCM_RecentlyUsedApps, который включается в клиентской настройке, если вы разрешите автоматическое создание правил Software Metering, и обслуживается агентом ConfigMgr. По умолчанию в нём деактивирован сбор свойства Launch Count, но даже без этого имейте в виду, что средний размер и количество отчетов инвентаризации от клиентов может заметно вырасти после включения класса – поэтому в больших инфраструктурах правила Software Metering лучше создавать вручную.
<h2>Класс WMI, который может остановить работу всей инфраструктуры: Win32_UserAccount</h2>
Частой задачей начинающего администратора является инвентаризация локальных пользователей на клиентских рабочих станциях и членства в локальных группах. Поиск по WMI-классам в консоли ConfigMgr приводит незадачливого администратора к классу <a href="https://msdn.microsoft.com/en-us/library/aa394507(v=vs.85).aspx">Win32_UserAccount</a>, название которого очень похоже на то, что требуется собрать. Однако достаточно включить его в клиентской настройке по умолчанию, чтобы получить целый набор проблем.

Тестовый опрос экземпляров этого класса через Wbemtest на доменной машине занимает подозрительно долгое время… и выдает <strong>всех пользователей домена</strong>, в который включена машина, помимо локальных пользователей. Поэтому в достаточно большом доменном окружении незадачливый администратор, скорее всего, получит телефонный звонок от администраторов домена с просьбой объяснить внезапный всплеск нагрузки от клиентов на контроллеры домена. Если же возникшая нагрузка окажется не слишком велика, то многомегабайтовые отчеты инвентаризации могут серьезно загрузить канал от клиентов к серверу ConfigMgr, компоненты сервера, отвечающие за обработку отчетов, и, разумеется, саму БД ConfigMgr.

Поэтому <strong>внимательно читайте</strong> описание классов на MSDN перед тем, как включать их инвентаризацию.

P.S. Для решения изначальной задачи необходимо создавать свой класс инвентаризации, например так: <a href="https://mnscug.org/blogs/sherry-kissinger/244-all-members-of-all-local-groups-configmgr-2012">Сбор членства в локальных группах</a>
<h2>Слишком частое расписание инвентаризации</h2>
Еще одна типичная ошибка – сбор данных инвентаризации слишком часто. Простая математика: N клиентов раз в M дней обеспечат вам N/M отчетов инвентаризации на сервере в день. Много это или мало для вашего сервера сильно зависит от его вычислительной мощности. Не забывайте также про исторические данные инвентаризации: сбор данных класса Win32_Process раз в час может обеспечить быстрое заполнение диска с БД SQL.

Кроме того, часть нагрузки распределяется и на клиентские машины. Типичная Hardware Inventory занимает порядка минуты, однако Software Inventory может длиться часами – особенно на больших и медленных дисках с множеством мелких файлов.

Поэтому подумайте о том, какие классы WMI вам действительно нужны, и отключите лишние. Не поленитесь отключить или по крайней мере ограничить какими-то папками инвентаризацию ПО. Увеличьте интервал инвентаризации: вам скорее всего не нужны данные «прямо сейчас», а меняются эти данные куда как реже, чем раз в день или, упаси боже, час (в этом случае собирать их вообще не стоит).
<h1>Циклы и расписания</h1>
С расписаниями связана почти вся самостоятельная деятельность сервера ConfigMgr. Именно с теми настройками, с которыми поставляется ConfigMgr, рассчитаны показатели масштабирования: такие, как максимальное число клиентов на сайт. Логично, что увеличивая частоту расписаний, вы увеличиваете нагрузку на сервер: пример мы уже рассмотрели в предыдущем разделе. Здесь же мы рассмотрим еще несколько таких опасных сценариев.
<h2>Обнаружение ресурсов</h2>
Обнаружение ресурсов из Active Directory и наполнение ими БД SQL также является базовой функциональностью ConfigMgr. Один из соблазнов, который появляется у начинающего администратора – увеличить частоту циклов полного обнаружения, чтобы ускорить появление в БД новых ресурсов.

В этом случае снова работает простая математика: каждое выполнение полного цикла обнаружения приведет к необходимости обработать столько ресурсов, сколько их будет обнаружено, не говоря уже о нагрузке на контроллеры домена. Для больших инфраструктур это количество может исчисляться <strong>сотнями тысяч</strong> (пользователи, группы, машины).

Так называемый Heartbeat Discovery является де-факто минималистичной версией инвентаризации и для этого вида обнаружения справедливы рекомендации предыдущего раздела.

Поэтому разумно подходите к настройкам обнаружения и пользуйтесь дельта-обнаружением по мере возможности для добавления в БД новых ресурсов. Детальное описание методов обнаружения и рекомендации по их использованию приведены в отличной статье этого блога <a href="https://blogs.technet.microsoft.com/scpferublog/2013/07/07/configuration-manager-108/">Обнаружение ресурсов в Configuration Manager – обзор, рекомендации, распространенные проблемы<span style="color: #333333">.</span></a>
<h2>Запрос политик и развертывания “As soon as possible”</h2>
Еще один соблазн начинающего администратора – увеличить частоту цикла запроса политик для ускорения процессов развертывания ПО. Серьезно загрузить запросами политик сервер достаточно сложно, однако в сочетании с развертыванием ПО с расписанием «As soon as possible» (ASAP) это может привести к негативным последствиям.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/ASAP.png"><img class="alignnone wp-image-685 size-large" alt="ASAP" src="https://msdnshared.blob.core.windows.net/media/2017/01/ASAP.png" /></a>

Начнем с того, что обязательные развертывания с расписанием ASAP сами по себе являются плохой практикой: клиент начнёт закачивать дистрибутив и ставить ПО как только он получит политику – а если это делают сразу много клиентов, то вы рискуете загрузить каналы связи и обеспечить серверу массовую одномоментную обработку отчетов об установке от клиентов.

Интервал запроса политик по умолчанию в 60 минут естественным образом рандомизирует начало установки ПО в том случае, если вы таки решились на развертывание ПО ASAP, однако и этого может быть недостаточно.

Поэтому планируйте развертывание ПО, не торопитесь и устанавливаейте дедлайн развертывания на несколько дней вперед. Напомню, клиент начинает закачивать дистрибутивы назначенных как Required пакетов и приложений в кэш в момент Available Time: это позволит не торопясь и с использованием BITS добиться наличия контента в кэше на момент дедлайна. При установке клиент возьмет контент из кэша и не будет загружать канал. Также не включайте настройку “Disable Deadline Randomization” в настройках клиента при прочих равных: по умолчанию <a href="https://docs.microsoft.com/en-us/sccm/core/clients/deploy/about-client-settings#computer-agent">дедлайн рандомизируется на 2 часа</a> - однако помните об окнах обслуживания, без 2 часов их может не хватить.
<h2>Сканирование и оценка обновлений</h2>
Аналогичный соблазн – увеличить частоту циклов сканирования и оценки обновлений в клиентских настройках для ускорения процессов развертывания обновлений.

Технически первый цикл приводит к синхронизации БД агента Windows Update с WSUS в составе инфраструктуры ConfigMgr и отправке отчета с итогами сканирования на сервер, а второй – к попытке установки обновлений, которая включает в себя сканирование.

Поэтому ускоренные циклы особенно опасны в сочетании с WSUS, на котором давно не запускали мастер очистки и реиндексацию. Результатом такой практики является повышенная нагрузка на CPU и память как на клиентах (от службы Windows Update Agent в составе одного из svchost.exe), так и на пулах приложений IIS на сервере WSUS.

Установка данных расписаний в больших инфраструктурах поэтому также требует вдумчивого планирования и привязке к основным циклам выпуска обновлений.
<h2>Переоценка коллекций и "тяжелые" запросы</h2>
Еще один важный источник нагрузки на сервер – это переоценка содержимого коллекций. Технически этим занимается один из тредов (SMS_COLLECTION_EVALUATOR) в основной службе SMS_EXECUTIVE на каждом первичном сайте. С заданной администратором частотой происходит переоценка всех правил наполнения коллекции, сбора результатов в один список и дедупликация.

Вновь, слишком частое расписание или слишком сложный запрос может привести к проблемам с производительностью сервера при переоценке коллекций. Обсуждение лучших практик создания и наполнения коллекций достойно <a href="https://blogs.technet.microsoft.com/scpferublog/2017/05/21/cm_collections_and_speed/">отдельной длинной статьи</a>, поэтому здесь я просто порекомендую не устанавливать слишком частое расписание без необходимости, а также использовать утилиту CEViewer.exe из комплекта <a href="https://www.microsoft.com/en-us/download/details.aspx?id=50012">Configuration Manager 2012 R2 Toolkit</a> для просмотра очередей на переоценку и времени, потраченного на обновление конкретной коллекции.

<a href="https://msdnshared.blob.core.windows.net/media/2017/01/ceviewer.png"><img width="1024" height="658" class="alignnone wp-image-685 size-large" alt="CEviewer" src="https://msdnshared.blob.core.windows.net/media/2017/01/ceviewer-1024x658.png" /></a>

Кроме того, не злоупотребляйте установкой галочки «инкрементальное обновление»: таких коллекций мы рекомендуем иметь не более 200 на всю иерархию.
<h1>Продолжение следует...</h1>
К сожалению, на этом список типичных ошибок администраторов не ограничивается. Читайте общие рекомендации и особенности управления терминальными серверами в <a href="https://blogs.technet.microsoft.com/scpferublog/2017/02/16/typical-admin-mistakes-2/">следующей части</a>.]]></content:encoded>
    </item>
    <item>
      <title>Использование PowerShell для создания диалоговых окон при развертывании ОС с помощью System Center Configuration Manager</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/powershell-based-ui-for-osd</link>
      <pubDate>Fri, 29 Apr 2016 08:54:27 GMT</pubDate>
      <dc:creator><![CDATA[Maksim Lyzaev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/?p=566</guid>
      <description><![CDATA[Я думаю, что каждый администратор ConfigMgr, работавший с функционалом Operating System Deployment,...]]></description>
      <content:encoded><![CDATA[<p style="text-align: justify">Я думаю, что каждый администратор ConfigMgr, работавший с функционалом Operating System Deployment, использовал свои скрипты для придания гибкости процессу. Если нужно показать пользователю какой-то интерфейс, то чаще всего задействуют HTML Application (HTA). В этой статье я хочу показать, как решить аналогичную задачу с помощью PowerShell. Да, используя PowerShell, можно нарисовать пользовательский интерфейс. Лично мне легче читать код на PowerShell, нежели html-теги. Сегодня мы нарисуем диалог для OSD с двумя вкладками:</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/167.png"><img class=" wp-image-576 size-full alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/167.png" alt="1" width="654" height="422" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2016/04/249.png"><img class=" wp-image-586 size-full alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/249.png" alt="2" width="654" height="422" /></a>
<p style="text-align: justify">Диалог нам понадобится для того, чтобы дать пользователю возможность изменить поведение Task Sequence. Логика работы TS будет зависеть от значения переменных TS. Например, мы можем пропустить выполнение какого-либо шага TS, если значение определенной переменной будет FALSE. В диалоге мы будем считывать значения, введенные пользователем и основываясь на этой информации будем присваивать значения переменным TS.</p>
<p style="text-align: justify">Из каких элементов состоит пользовательский интерфейс? Из объектов, которые еще называют Windows Controls. Они бывают разными – всевозможные списки, кнопки, вкладки, меню, поля для ввода текста, надписи и так далее. Основным элементом каждого интерфейса является форма. Собственно, это и есть окно в привычном для нас понимании. Оно может иметь заголовок и кнопки свертывания, маскимизации/минимизации, закрытия в правом верхнем углу. На форме мы располагаем остальные элементы интерфейса. Вот что мы будем использовать в нашем примере:</p>

<ul style="text-align: justify">
	<li>Form – это форма, основа для других элементов интерфейса</li>
	<li>TabControl – для пользователя этот элемент выглядит как вкладки. Мы создадим в нашем диалоге 2 вкладки, чтобы эффективней расположить остальные элементы</li>
	<li>Label – в основном этот тип объектов используется для показа всевозможных надписей. Но мы его используем еще и с целью группировки RadioButton</li>
	<li>RadioButton – переключатель состоящий из нескольких элементов, мы будем использовать его для того чтобы пользователь выбрал одну опцию из нескольких предложенных</li>
	<li>TextBox – поле для ввода текста</li>
	<li>ComboBox – выпадающий список, в котором обычно пользователь может выбрать какой-либо элемент</li>
	<li>CheckBox – не могу подобрать заумное описание. Это просто квадратик, в котором можно поставить галочку :)</li>
	<li>Button - кнопка</li>
</ul>
<p style="text-align: justify">Вообще элементов создано довольно много, полный перечень и описание можно найти на <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/bb773169(v=vs.85).aspx">msdn</a>. Элементы пользовательского интерфейса обладают различными свойствами: ширина, высота, местоположение, надписи, активность (доступен элемент для использования или заблокирован), видимость и пр.</p>
<p style="text-align: justify">Мы можем отслеживать и обрабатывать различные события, генерируемые при взаимодействии с элементами интерфейса. В данном случае, мы хотим, чтобы при нажатии кнопки Apply считались все выбранные пользователем опции и записались в переменные Task Sequence. Для этого мы воспользуемся событием Click. А точнее, мы впишем свой код в процедуру, вызываемую при возникновении события Click у кнопки Apply. Событий также создано немало и с ними можно делать много интересного: например, отслеживать изменение текста в текстовом поле, отслеживать изменение размера объекта, отслеживать момент, когда пользователь помещает указатель мыши на объект и пр. Хотите знать больше – вам опять прямая дорога в один из разделов <a href="https://msdn.microsoft.com/en-us/library/system.windows.forms.control_events(v=vs.100).aspx">msdn</a>.</p>
<p style="text-align: justify">Логику скрипта не сложно понять, я дам только общее описание. Сначала прячем окно интерфейса Task Sequence:</p>
<p style="padding-left: 30px">$objTSProgressUI = New-Object -COMObject Microsoft.SMS.TSProgressUI</p>
<p style="padding-left: 30px">$objTSProgressUI.CloseProgressDialog()</p>
<p style="padding-left: 30px">Далее создаем объект для доступа к переменным Task Sequence</p>
<p style="padding-left: 30px">$objTSEnv = New-Object -COMObject Microsoft.SMS.TSEnvironment</p>
<p style="text-align: justify">В нашем диалоговом окне есть опция выбора OU и нужно как-то подгрузить список OU в ComboBox. В скрипте мы возьмем значения из заранее подготовленного текстового файла и запишем их в переменную:</p>
<p style="padding-left: 30px">$OUList = Get-Content "OUList.txt"</p>
<p style="padding-left: 30px">#delete empty lines</p>
<p style="padding-left: 30px">$OUList = $OUList | ? {$_.trim() -ne "" }</p>
<p style="text-align: justify">Вот пример текстового файла со списком OU:</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/337.png"><img class=" wp-image-596 size-full alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/337.png" alt="3" width="617" height="244" /></a>
<p style="text-align: justify">Помещаем текстовый файл в один пакет со скриптом PowerShell. А вот пример, как можно создать такой текстовый файл с помощью PowerShell:</p>
<p style="padding-left: 30px">Get-ADOrganizationalUnit -Filter * -Properties DistinguishedName | Select-Object -ExpandProperty DistinguishedName | Out-File "C:\Windows\Temp\OUlist.txt"</p>
<p style="text-align: justify">Вернемся к скрипту, который рисует форму с опциями. Создадим форму и определим некоторые ее свойства:</p>
<p style="padding-left: 30px">Add-Type -AssemblyName System.Windows.Forms</p>
<p style="padding-left: 30px">$objForm = New-Object System.Windows.Forms.Form</p>
<p style="padding-left: 30px">$objForm.Text = "Don't hesitate to use deployment options"</p>
<p style="padding-left: 30px">$objForm.Size = New-Object System.Drawing.Size(670,430)</p>
<p style="padding-left: 30px">$objForm.StartPosition = "CenterScreen"</p>
<p style="padding-left: 30px">$objForm.Topmost = $True</p>
<p style="padding-left: 30px">$objForm.MaximizeBox = $false</p>
<p style="padding-left: 30px">$objForm.MinimizeBox = $false</p>
<p style="text-align: justify">Потом создадим элементы управления, например, TabControl:</p>
<p style="padding-left: 30px">$objTab = New-Object System.Windows.Forms.TabControl</p>
<p style="padding-left: 30px">$objTab.Size = New-Object System.Drawing.Size(653,333)</p>
Но просто создать элемент недостаточно, нужно добавить его на форму:
<p style="padding-left: 30px">$objForm.Controls.Add($objTab)</p>
 Затем создадим страницы для TabControl и разместим их на форме:
<p style="padding-left: 30px">$objTab = New-Object System.Windows.Forms.TabControl</p>
<p style="padding-left: 30px">$objTab.Size = New-Object System.Drawing.Size(653,333)</p>
<p style="padding-left: 30px">$objForm.Controls.Add($objTab)</p>
Ну а дальше аналогично создадим надписи, кнопки, списки выбора, радиокнопки и поместим их на форму или на страницы TabControl.

Далее код, который обрабатывает нажатие кнопки Apply, в нем мы считываем значения с элементов формы и сохраняем их в переменные Task Sequence
<p style="padding-left: 30px">$ApplyButton.Add_Click({</p>
<p style="padding-left: 30px">$objTSEnv.Value("OSDComputerName")=$objTextBox_PCName.Text</p>
<p style="padding-left: 30px">If($objComboBox_PCOU.SelectedIndex -ne 0) { $objTSEnv.Value("OSDDomainOUName")="LDAP://" + $objComboBox_PCOU.SelectedItem }</p>
<p style="padding-left: 30px">If($objCheckBox_SW1.Checked -eq $True) { $objTSEnv.Value("InstallApp01")=$True }</p>
<p style="padding-left: 30px">If($objCheckBox_SW2.Checked -eq $True) { $objTSEnv.Value("InstallApp02")=$True }</p>
<p style="padding-left: 30px">If($objCheckBox_SW3.Checked -eq $True) { $objTSEnv.Value("InstallApp03")=$True }</p>
<p style="padding-left: 30px">If($objCheckBox_SW4.Checked -eq $True) { $objTSEnv.Value("InstallApp04")=$True }</p>
<p style="padding-left: 30px">If($objCheckBox_SW5.Checked -eq $True) { $objTSEnv.Value("InstallApp05")=$True }</p>
<p style="padding-left: 30px">If($objCheckBox_SW6.Checked -eq $True) { $objTSEnv.Value("InstallApp06")=$True }</p>
<p style="padding-left: 30px">if($objRadioButtonYes_DisableAdmin.Checked -eq $True) { $objTSEnv.Value("OSDRandomAdminPassword")=$True}</p>
<p style="padding-left: 30px">if($objRadioButtonNo_DisableAdmin.Checked -eq $True) { $objTSEnv.Value("OSDRandomAdminPassword")=$False}</p>
<p style="padding-left: 30px">if($objRadioButtonYes_Updates.Checked -eq $True) { $objTSEnv.Value("InstallUpdates")=$True}</p>
<p style="padding-left: 30px">$objForm.Close()</p>
<p style="padding-left: 30px">})</p>
 Ну и последним штрихом вызываем нашу форму на экран:
<p style="padding-left: 30px">$objForm.Add_Shown({$objForm.Activate()})</p>
<p style="padding-left: 30px">[void] $objForm.ShowDialog()</p>
<p style="text-align: justify">Теперь нужно написать пару слов о том, как запустить этот скрипт в Task Sequence. Во-первых, нужно добавить опциональные компоненты в используемый загрузочный образ:</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/423.png"><img class=" wp-image-605 size-full alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/423.png" alt="4" width="591" height="614" /></a>
<p style="text-align: justify">Во-вторых, если просто использовать шаг Run PowerShell Script, то скрипт запустится, но пользователь не увидит ничего на экране. Чтобы сделать окно видимым, я использую шаг Run Command Line</p>
<a href="https://msdnshared.blob.core.windows.net/media/2016/04/525.png"><img class=" wp-image-606 size-full alignnone" src="https://msdnshared.blob.core.windows.net/media/2016/04/525.png" alt="5" width="454" height="317" /></a>
<p style="padding-left: 30px">ServiceUI.exe -process:TSProgressUI.exe %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File OSD_options.ps1</p>
<p style="text-align: justify">ServiceUI.exe входит в состав Microsoft Deployment Tools (MDT). В зависимости от архитектуры загрузочного образа используем x86 или x64 версию ServiceUI.exe. Ну и не забываем, что этот файл нужно положить в тот же пакет, рядом с нашим PowerShell-скриптом. Ссылку на полную версию скрипта можно найти в самом конце статьи.</p>
<p style="text-align: justify">Также, нельзя умолчать о том, что существует более продвинутый способ рисования пользовательского интерфейса для скриптов на PowerShell. Он не требует расчета координат элементов. Особенно это удобно, когда элементов много. Можно буквально взять и перевернуть кнопку вверх ногами. Если коротко, то все сводится к тому чтобы в Visual Studio (можно использовать Visual Studio Express) с помощью мыши создать форму с необходимыми элементами. В итоге получаем XML-код (XAML), который мы копируем и вставляем в наш PowerShell-скрипт. Подробное описание процесса есть в статье <a href="https://blogs.technet.com/b/platformspfe/archive/2014/01/20/introduction-to-xaml.aspx">Integrating XAML into PowerShell</a> Концепция сильно напоминает HTML-приложение – можно сказать виток эволюции завершился, и мы вернулись к тому, с чего начали. Удачного скриптинга!</p>
<p style="text-align: justify"><a href="https://msdnshared.blob.core.windows.net/media/2016/04/OSD_options.ps1_.txt">OSD_options.ps1</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Как создать динамическое распределенное приложение в SCOM</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/545</link>
      <pubDate>Sun, 09 Aug 2015 14:10:38 GMT</pubDate>
      <dc:creator><![CDATA[Tatiana Golovina]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/2015/08/09/545/</guid>
      <description><![CDATA[&#1042; &#1086;&#1089;&#1085;&#1086;&#1074;&#1077;...]]></description>
      <content:encoded><![CDATA[<p>&#1042; &#1086;&#1089;&#1085;&#1086;&#1074;&#1077; &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1077;&#1085;&#1080;&#1103; &#1083;&#1102;&#1073;&#1086;&#1075;&#1086; &#1082;&#1086;&#1084;&#1087;&#1086;&#1085;&#1077;&#1085;&#1090;&#1072; &#1074; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1084; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1080; &#1083;&#1077;&#1078;&#1080;&#1090; &#1084;&#1086;&#1076;&#1091;&#1083;&#1100; Microsoft.SystemCenter.GroupPopulator, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1090;&#1072;&#1082;&#1078;&#1077; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1077;&#1090;&#1089;&#1103; &#1087;&#1088;&#1080; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1080; &#1075;&#1088;&#1091;&#1087;&#1087; &#1074; SCOM.<p>&#1050;&#1072;&#1082; &#1080;&#1079;&#1074;&#1077;&#1089;&#1090;&#1085;&#1086;,&nbsp;&#1075;&#1088;&#1091;&#1087;&#1087;&#1099; &#1084;&#1086;&#1075;&#1091;&#1090; &#1073;&#1099;&#1090;&#1100; &#1082;&#1072;&#1082; &#1089;&#1090;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1084;&#1080;, &#1089; &#1085;&#1072;&#1073;&#1086;&#1088;&#1086;&#1084; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1093; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1086;&#1074;, &#1090;&#1072;&#1082; &#1080; &#1076;&#1080;&#1085;&#1072;&#1084;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1084;&#1080;, &#1085;&#1072;&#1087;&#1086;&#1083;&#1085;&#1103;&#1090;&#1100;&#1089;&#1103; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1072;&#1084;&#1080; &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102;&nbsp;&#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1099;&#1093; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;.</p><p>&#1045;&#1089;&#1083;&#1080; &#1091; &#1074;&#1072;&#1089; &#1089;&#1090;&#1086;&#1080;&#1090; &#1079;&#1072;&#1076;&#1072;&#1095;&#1072; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1103; &#1076;&#1080;&#1085;&#1072;&#1084;&#1080;&#1095;&#1077;&#1089;&#1082;&#1086;&#1075;&#1086; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1075;&#1086; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103;, &#1090;.&#1077;. &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1099; &#1073;&#1091;&#1076;&#1091;&#1090; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080; &#1087;&#1086;&#1103;&#1074;&#1083;&#1103;&#1090;&#1100;&#1089;&#1103; &#1074; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1084; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1080; &#1087;&#1088;&#1080; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1080; &#1074; SCOM. &#1042;&#1072;&#1084; &#1085;&#1091;&#1078;&#1085;&#1086;:</p><ol>
<li>&#1057;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1077; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077; &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102; Distributed Application Designer, &#1087;&#1086;&#1096;&#1072;&#1075;&#1086;&#1074;&#1072;&#1103; &#1080;&#1085;&#1089;&#1090;&#1088;&#1091;&#1082;&#1094;&#1080;&#1103; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1072; &#1074; &#1089;&#1090;&#1072;&#1090;&#1100;&#1077; <a href="/b/scpferublog/archive/2014/12/01/3641862.aspx">https://blogs.technet.com/b/scpferublog/archive/2014/12/01/3641862.aspx.</a></li>
<li>&#1069;&#1082;&#1089;&#1087;&#1086;&#1088;&#1090;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1087;&#1072;&#1082;&#1077;&#1090; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1090; &#1074;&#1072;&#1096;&#1077; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1077; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077;.</li>
<li>&#1053;&#1072;&#1081;&#1090;&#1080; &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1077;&#1085;&#1080;&#1103;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1085;&#1072;&#1087;&#1086;&#1083;&#1085;&#1103;&#1102;&#1090; &#1082;&#1086;&#1084;&#1087;&#1086;&#1085;&#1077;&#1085;&#1090;&#1099; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1072;&#1084;&#1080;. &#1054;&#1085;&#1080; &#1074;&#1099;&#1075;&#1083;&#1103;&#1076;&#1103;&#1090; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1085;&#1086; &#1090;&#1072;&#1082;:</li>
</ol><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/1.jpg" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/1.jpg"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/1.jpg" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/1.jpg" border="0"></a></p><p></p><p>&#1044;&#1072;&#1083;&#1077;&#1077; &#1074;&#1084;&#1077;&#1089;&#1090;&#1086; &#1089;&#1087;&#1080;&#1089;&#1082;&#1072; &#1089;&#1090;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;&#1093; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1086;&#1074; (<span style="background-color:#ffff00;">&nbsp;IncludeList</span>), &#1079;&#1072;&#1076;&#1072;&#1090;&#1100; &#1087;&#1088;&#1072;&#1074;&#1080;&#1083;&#1086;, &#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;, &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1077;&#1085;&#1080;&#1077; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1086;&#1074; &#1087;&#1086; &#1088;&#1077;&#1075;&#1091;&#1083;&#1103;&#1088;&#1085;&#1086;&#1084;&#1091; &#1074;&#1099;&#1088;&#1072;&#1078;&#1077;&#1085;&#1080;&#1102;:</p><p>&nbsp;&nbsp;&nbsp;&lt;Discovery ID="SC_e80199dc58db47ab85f317d6cd562a44_Service_35027f900c494cbe970373f8ea010a74_ItemPopulation" Enabled="true" Target="SC_e80199dc58db47ab85f317d6cd562a44_Service_35027f900c494cbe970373f8ea010a74" ConfirmDelivery="false" Remotable="true" Priority="Normal"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Category&gt;Discovery&lt;/Category&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DiscoveryTypes /&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DataSource ID="DS" TypeID="SystemCenter!Microsoft.SystemCenter.GroupPopulator"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RuleId&gt;$MPElement$&lt;/RuleId&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;GroupInstanceId&gt;$Target/Id$&lt;/GroupInstanceId&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MembershipRules&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MembershipRule&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringClass&gt;$MPElement[Name="MicrosoftSQLServer2012Discovery6540!Microsoft.SQLServer.2012.Database"]$&lt;/MonitoringClass&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RelationshipClass&gt;$MPElement[Name="SCIMembership_fbce7dd725a04618ac3cfb4e9eb7aef6"]$&lt;/RelationshipClass&gt;<br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;IncludeList&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringObjectId&gt;{5b3d0894-daf9-7c0a-6e5d-01c1e716806f}&lt;/MonitoringObjectId&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringObjectId&gt;{6cd04aca-6262-8bf6-85fe-541e84211e2e}&lt;/MonitoringObjectId&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringObjectId&gt;{3fd4adb5-909f-2db6-eaa2-022b666abecb}&lt;/MonitoringObjectId&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringObjectId&gt;{62c8ebe1-fb87-3e3d-4e57-4113348ef592}&lt;/MonitoringObjectId&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;MonitoringObjectId&gt;{b5d2ff79-99b3-ac25-72a9-cadd5f558aa9}&lt;/MonitoringObjectId&gt;</span><br><span style="background-color:#ffff00;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/IncludeList&gt;</span></p><p>&nbsp;&lt;!--&nbsp;&#1047;&#1072;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1085;&#1072;&nbsp;--&gt;</p><p><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Expression&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;RegExExpression&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;ValueExpression&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Property&gt;$MPElement[Name="SystemLibrary7585010!System.Entity"]/DisplayName$&lt;/Property&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/ValueExpression&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Operator&gt;MatchesRegularExpression&lt;/Operator&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;Pattern&gt;DB1|DB2&lt;/Pattern&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/RegExExpression&gt;</span><br><span style="background-color:#ccffcc;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Expression&gt;</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/MembershipRule&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/MembershipRules&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/DataSource&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/Discovery&gt;</p><p>&#1042; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1077;,&nbsp;&#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &nbsp;&#1082;&#1086;&#1084;&#1087;&#1086;&#1085;&#1077;&#1085;&#1090; &#1088;&#1072;&#1089;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1077;&#1085;&#1085;&#1086;&#1075;&#1086; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103; &#1073;&#1091;&#1076;&#1077;&#1090; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080; &#1085;&#1072;&#1087;&#1086;&#1083;&#1085;&#1103;&#1090;&#1100;&#1089;&#1103; &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1072;&#1084;&#1080; &#1082;&#1083;&#1072;&#1089;&#1089;&#1072; Microsoft.SQLServer.2012.Database &#1089; <span style="background-color:#888888;"><span style="background-color:#ffffff;">&#1080;&#1084;&#1077;&#1085;&#1072;&#1084;&#1080; DB1 &#1080;&#1083;&#1080; DB2.</span></span></p></p>
]]></content:encoded>
    </item>
    <item>
      <title>Пакет управления для мониторинга приложений WebSphere 8</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/555</link>
      <pubDate>Sun, 09 Aug 2015 13:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Tatiana Golovina]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/2015/08/09/555/</guid>
      <description><![CDATA[&#1045;&#1089;&#1083;&#1080; &#1087;&#1086;&#1089;&#1083;&#1077;...]]></description>
      <content:encoded><![CDATA[<p>&#1045;&#1089;&#1083;&#1080; &#1087;&#1086;&#1089;&#1083;&#1077; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1087;&#1072;&#1082;&#1077;&#1090;&#1072; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; &#1076;&#1083;&#1103; &#1084;&#1086;&#1085;&#1080;&#1090;&#1086;&#1088;&#1080;&#1085;&#1075;&#1072; WebSphere SCOM &#1085;&#1077; &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1080;&#1083;&nbsp;java&nbsp;&#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103;, &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1100;&#1090;&#1077; &#1078;&#1091;&#1088;&#1085;&#1072;&#1083; &#1083;&#1086;&#1075;&#1086;&#1074; &#1085;&#1072; &#1085;&#1072;&#1083;&#1080;&#1095;&#1080;&#1077; &#1086;&#1096;&#1080;&#1073;&#1082;&#1080; 10801.&nbsp;&#1054;&#1096;&#1080;&#1073;&#1082;&#1072; &#1075;&#1086;&#1074;&#1086;&#1088;&#1080;&#1090; &#1086; &#1090;&#1086;&#1084;, &#1095;&#1090;&#1086; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077;&nbsp;&#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1077;&#1085;&#1080;&#1103;&nbsp;&#1085;&#1077; &#1073;&#1091;&#1076;&#1091;&#1090; &#1079;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1099; &#1074; &#1073;&#1072;&#1079;&#1091; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;&nbsp;Operations Manager.<p>&#1069;&#1090;&#1086; &#1087;&#1088;&#1086;&#1080;&#1089;&#1093;&#1086;&#1076;&#1080;&#1090; &#1087;&#1086; &#1087;&#1088;&#1080;&#1095;&#1080;&#1085;&#1077; &#1090;&#1086;&#1075;&#1086;, &#1095;&#1090;&#1086; &#1082;&#1083;&#1102;&#1095;&#1077;&#1074;&#1086;&#1081; &#1072;&#1090;&#1088;&#1080;&#1073;&#1091;&#1090; <strong>ObjectName</strong> &#1082;&#1083;&#1072;&#1089;&#1089;&#1072;&nbsp; <strong>Microsoft.JEE.Application&nbsp;</strong> c &#1087;&#1072;&#1082;&#1077;&#1090;&#1072; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; <strong>Microsoft.JEE.Library</strong> &#1080;&#1084;&#1077;&#1077;&#1090; &#1086;&#1075;&#1088;&#1072;&#1085;&#1080;&#1095;&#1077;&#1085;&#1080;&#1077; &#1074; 512 &#1089;&#1080;&#1084;&#1074;&#1086;&#1083;&#1086;&#1074;. &#1041;&#1086;&#1083;&#1077;&#1077; &#1087;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1086; &#1076;&#1072;&#1085;&#1085;&#1072;&#1103; &#1087;&#1088;&#1086;&#1073;&#1083;&#1077;&#1084;&#1072; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085;&#1072; &#1074; &#1089;&#1090;&#1072;&#1090;&#1100;&#1077; <a href="/b/random_happy_dev_thoughts/archive/2013/01/31/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1-version-2.aspx.">https://blogs.technet.com/b/random_happy_dev_thoughts/archive/2013/01/31/howto-monitor-ejbs-with-beanspy-in-scom-2012-on-websphere-6-1-version-2.aspx.</a> &#1058;&#1072;&#1082;&#1078;&#1077; &#1074; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1089;&#1090;&#1072;&#1090;&#1100;&#1077; &#1077;&#1089;&#1090;&#1100; &#1089;&#1089;&#1099;&#1083;&#1082;&#1072; &#1085;&#1072; &#1087;&#1072;&#1082;&#1077;&#1090; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1086;&#1073;&#1085;&#1072;&#1088;&#1091;&#1078;&#1080;&#1074;&#1072;&#1077;&#1090;&nbsp;WebSphere &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1103; &#1074;&#1077;&#1088;&#1089;&#1080;&#1080; 6.</p><p>&#1053;&#1072; &#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &#1084;&#1086;&#1084;&#1077;&#1085;&#1090; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090; &#1073;&#1086;&#1083;&#1077;&#1077; &#1085;&#1086;&#1074;&#1072;&#1103; &#1074;&#1077;&#1088;&#1089;&#1080;&#1103; WebSphere 8. &#1071; &#1084;&#1086;&#1076;&#1080;&#1092;&#1080;&#1094;&#1080;&#1088;&#1086;&#1074;&#1072;&#1083;&#1072; &#1076;&#1072;&#1085;&#1085;&#1099;&#1081; &#1087;&#1072;&#1082;&#1077;&#1090; &#1091;&#1087;&#1088;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; &#1087;&#1086;&#1076; &#1085;&#1086;&#1074;&#1091;&#1102; &#1074;&#1077;&#1088;&#1089;&#1080;&#1102; &#1080; &#1076;&#1086;&#1073;&#1072;&#1074;&#1080;&#1083;&#1072; &#1074; &#1085;&#1077;&#1075;&#1086; &#1084;&#1086;&#1085;&#1080;&#1090;&#1086;&#1088;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1103;&#1077;&#1090; &#1076;&#1086;&#1089;&#1090;&#1091;&#1087;&#1085;&#1086;&#1089;&#1090;&#1100; &#1087;&#1088;&#1080;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1081; WebSphere.</p><p></p><p><span style="font-family:'Calibri','sans-serif';font-size:xx-small;"><em>&#1044;&#1072;&#1085;&#1085;&#1072;&#1103;&nbsp;&#1089;&#1090;&#1072;&#1090;&#1100;&#1103; &#1085;&#1086;&#1089;&#1080;&#1090; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1081; &#1093;&#1072;&#1088;&#1072;&#1082;&#1090;&#1077;&#1088;, &#1089;&#1089;&#1099;&#1083;&#1082;&#1080; &#1085;&#1072; &#1074;&#1077;&#1073;-&#1089;&#1072;&#1081;&#1090;&#1099; &#1087;&#1088;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1102;&#1090;&#1089;&#1103; &#1076;&#1083;&#1103; &#1091;&#1076;&#1086;&#1073;&#1089;&#1090;&#1074;&#1072; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1077;&#1081;. &#1050;&#1086;&#1088;&#1087;&#1086;&#1088;&#1072;&#1094;&#1080;&#1103; &#1052;&#1072;&#1081;&#1082;&#1088;&#1086;&#1089;&#1086;&#1092;&#1090; &#1085;&#1077; &#1085;&#1077;&#1089;&#1077;&#1090; &#1085;&#1080;&#1082;&#1072;&#1082;&#1086;&#1081; &#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1077;&#1085;&#1085;&#1086;&#1089;&#1090;&#1080; &#1079;&#1072; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1085;&#1080;&#1077; &#1074;&#1077;&#1073;-&#1089;&#1072;&#1081;&#1090;&#1086;&#1074;, &#1085;&#1077; &#1087;&#1088;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1077;&#1090; &#1085;&#1080;&#1082;&#1072;&#1082;&#1080;&#1093; &#1075;&#1072;&#1088;&#1072;&#1085;&#1090;&#1080;&#1081; &#1086;&#1090;&#1085;&#1086;&#1089;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086; &#1090;&#1086;&#1095;&#1085;&#1086;&#1089;&#1090;&#1080;, &#1087;&#1086;&#1083;&#1085;&#1086;&#1090;&#1099; &#1080;&#1083;&#1080; &#1079;&#1072;&#1082;&#1086;&#1085;&#1085;&#1086;&#1089;&#1090;&#1080; &#1080;&#1093; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1072;&#1085;&#1080;&#1103;, &#1089;&#1089;&#1099;&#1083;&#1082;&#1080; &#1085;&#1072; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1102;&#1090;&#1089;&#1103; &#1074; &#1076;&#1072;&#1085;&#1085;&#1086;&#1081; &#1089;&#1090;&#1072;&#1090;&#1100;&#1077;. &#1057;&#1089;&#1099;&#1083;&#1082;&#1072; &#1085;&#1072; &#1074;&#1085;&#1077;&#1096;&#1085;&#1080;&#1081; &#1091;&#1079;&#1077;&#1083; &#1085;&#1077; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1091;&#1084;&#1077;&#1074;&#1072;&#1077;&#1090; &#1086;&#1076;&#1086;&#1073;&#1088;&#1077;&#1085;&#1080;&#1103; &#1084;&#1085;&#1077;&#1085;&#1080;&#1081;, &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1080; &#1080;&#1083;&#1080; &#1087;&#1088;&#1086;&#1076;&#1091;&#1082;&#1094;&#1080;&#1080; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1085;&#1086;&#1081; &#1085;&#1072; &#1090;&#1072;&#1082;&#1080;&#1093; &#1074;&#1077;&#1073;-&#1089;&#1072;&#1081;&#1090;&#1072;&#1093;.</em></span></p><p></p><p></p><p></p></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/telligent.evolution.components.attachments/01/9622/00/00/03/65/30/59/Microsoft.JEE.WebSphere.8.EJBCustom.zip" original-url="https://blogs.technet.com/cfs-filesystemfile.ashx/__key/telligent-evolution-components-attachments/01-9622-00-00-03-65-30-59/Microsoft.JEE_.WebSphere.8.EJBCustom.zip">Microsoft.JEE.WebSphere.8.EJBCustom.zip</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Построение отчетов для Configuration Manager 2012 в SQL Server Reporting Services</title>
      <link>https://docs.microsoft.com/archive/blogs/scpferublog/configuration-manager-2012-sql-server-reporting-s</link>
      <pubDate>Wed, 27 May 2015 02:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Maksim Lyzaev]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/scpferublog/2015/05/27/configuration-manager-2012-sql-server-reporting-s/</guid>
      <description><![CDATA[&#1044;&#1086;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086; &#1095;&#1072;&#1089;&#1090;&#1086; &#1103;...]]></description>
      <content:encoded><![CDATA[<p style="text-align:justify;">&#1044;&#1086;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086; &#1095;&#1072;&#1089;&#1090;&#1086; &#1103; &#1089;&#1083;&#1099;&#1096;&#1091; &#1074;&#1086;&#1087;&#1088;&#1086;&#1089;&#1099; &#1086; &#1090;&#1086;&#1084;, &#1082;&#1072;&#1082; &#1087;&#1086;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090; &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102; Report Builder &#1080; Reporting Services. &#1058;&#1077;&#1084;, &#1082;&#1090;&#1086; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1085;&#1072;&#1095;&#1080;&#1085;&#1072;&#1077;&#1090; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1090;&#1100; &#1089; ConfigMgr 2012 &#1080;&#1083;&#1080; &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1090; &#1089; 2007-&#1081; &#1074;&#1077;&#1088;&#1089;&#1080;&#1080;, &#1087;&#1086;&#1085;&#1072;&#1095;&#1072;&#1083;&#1091; &#1090;&#1103;&#1078;&#1077;&#1083;&#1086; &#1080; &#1085;&#1077;&#1087;&#1088;&#1080;&#1074;&#1099;&#1095;&#1085;&#1086; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1090;&#1100; &#1089; &#1085;&#1086;&#1074;&#1099;&#1084; &#1080;&#1085;&#1089;&#1090;&#1088;&#1091;&#1084;&#1077;&#1085;&#1090;&#1086;&#1084; &#1087;&#1086;&#1089;&#1090;&#1088;&#1086;&#1077;&#1085;&#1080;&#1103; &#1086;&#1090;&#1095;&#1077;&#1090;&#1086;&#1074;. &#1063;&#1090;&#1086;-&#1078;, &#1087;&#1086;&#1087;&#1088;&#1086;&#1073;&#1091;&#1077;&#1084; &#1088;&#1072;&#1079;&#1086;&#1073;&#1088;&#1072;&#1090;&#1100;&#1089;&#1103;.<p style="text-align:justify;">&#1055;&#1088;&#1077;&#1076;&#1087;&#1086;&#1083;&#1086;&#1078;&#1080;&#1084;, &#1085;&#1072;&#1084; &#1085;&#1091;&#1078;&#1077;&#1085; &#1086;&#1090;&#1095;&#1077;&#1090;, &#1074; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1084; &#1084;&#1099; &#1089;&#1084;&#1086;&#1078;&#1077;&#1084; &#1091;&#1074;&#1080;&#1076;&#1077;&#1090;&#1100; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1086;&#1074;, &#1085;&#1072; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093; &#1087;&#1088;&#1080;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1105;&#1085;&#1085;&#1099;&#1081; &#1092;&#1072;&#1081;&#1083;. &#1058;&#1072;&#1082;&#1078;&#1077; &#1084;&#1099; &#1093;&#1086;&#1090;&#1080;&#1084;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1101;&#1090;&#1086;&#1090; &#1086;&#1090;&#1095;&#1077;&#1090; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1083; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1087;&#1086; &#1086;&#1087;&#1077;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1086;&#1081; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1077; &#1080; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1077; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1099;, &#1087;&#1086;&#1087;&#1072;&#1076;&#1072;&#1102;&#1097;&#1080;&#1077; &#1074; &#1086;&#1090;&#1095;&#1077;&#1090;. &#1055;&#1088;&#1077;&#1076;&#1074;&#1072;&#1088;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;, &#1103; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1083; &#1080; &#1074;&#1099;&#1087;&#1086;&#1083;&#1085;&#1080;&#1083; &#1080;&#1085;&#1074;&#1077;&#1085;&#1090;&#1072;&#1088;&#1080;&#1079;&#1072;&#1094;&#1080;&#1102; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074; &#1085;&#1072; &#1082;&#1083;&#1080;&#1077;&#1085;&#1090;&#1072;&#1093;. &#1059;&#1089;&#1083;&#1086;&#1074;&#1080;&#1077; &#1079;&#1072;&#1076;&#1072;&#1095;&#1080; &#1089;&#1083;&#1077;&#1075;&#1082;&#1072; &#1085;&#1072;&#1076;&#1091;&#1084;&#1072;&#1085;&#1086;, &#1085;&#1086; &#1074; &#1084;&#1086;&#1084;&#1077;&#1085;&#1090; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1103; &#1089;&#1090;&#1072;&#1090;&#1100;&#1080;, &#1084;&#1085;&#1077; &#1074; &#1075;&#1086;&#1083;&#1086;&#1074;&#1091; &#1085;&#1080;&#1095;&#1077;&#1075;&#1086; &#1073;&#1086;&#1083;&#1077;&#1077; &#1078;&#1080;&#1079;&#1085;&#1077;&#1085;&#1085;&#1086;&#1075;&#1086; &#1085;&#1077; &#1087;&#1088;&#1080;&#1096;&#1083;&#1086;.</p><p style="text-align:justify;">&#1071; &#1087;&#1088;&#1077;&#1076;&#1087;&#1086;&#1095;&#1080;&#1090;&#1072;&#1102; &#1085;&#1072;&#1095;&#1080;&#1085;&#1072;&#1090;&#1100; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072; &#1089; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1103; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072; &#1074; SQL Management Studio. &#1045;&#1089;&#1083;&#1080; &#1085;&#1091;&#1078;&#1077;&#1085; &#1086;&#1090;&#1095;&#1077;&#1090; &#1089; &#1082;&#1072;&#1082;&#1086;&#1081;-&#1083;&#1080;&#1073;&#1086; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1077;&#1081;, &#1082;&#1072;&#1089;&#1072;&#1102;&#1097;&#1077;&#1081;&#1089;&#1103; &#1082;&#1083;&#1080;&#1077;&#1085;&#1090;&#1086;&#1074;, &#1090;&#1086; &#1089; &#1073;&#1086;&#1083;&#1100;&#1096;&#1086;&#1081; &#1074;&#1077;&#1088;&#1086;&#1103;&#1090;&#1085;&#1086;&#1089;&#1090;&#1100;&#1102; &#1076;&#1083;&#1103; &#1087;&#1086;&#1089;&#1090;&#1088;&#1086;&#1077;&#1085;&#1080;&#1103; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072; &#1087;&#1086;&#1085;&#1072;&#1076;&#1086;&#1073;&#1080;&#1090;&#1089;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; v_R_System. &#1042; &#1101;&#1090;&#1086;&#1084; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1080; &#1093;&#1088;&#1072;&#1085;&#1080;&#1090;&#1089;&#1103; &#1073;&#1072;&#1079;&#1086;&#1074;&#1072;&#1103; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1103; &#1086; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072;&#1093;, &#1080;&#1079;&#1074;&#1077;&#1089;&#1090;&#1085;&#1099;&#1093; ConfigMgr&rsquo;&#1091;.</p><p style="text-align:justify;">&#1042;&#1086;&#1090; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;, &#1089; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; &#1103; &#1085;&#1072;&#1095;&#1085;&#1091;:<br>SELECT Netbios_Name0, Operating_System_Name_and0 <br>FROM v_R_System</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/1.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/1.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/1.png" border="0"></a></p><p style="text-align:justify;">&nbsp; <br>&#1058;&#1077;&#1087;&#1077;&#1088;&#1100; &#1091; &#1084;&#1077;&#1085;&#1103; &#1077;&#1089;&#1090;&#1100; &#1080;&#1084;&#1103; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072; &#1080; &#1085;&#1072;&#1079;&#1074;&#1072;&#1085;&#1080;&#1077; &#1054;&#1057;. &#1044;&#1072;&#1083;&#1077;&#1077; &#1084;&#1085;&#1077; &#1085;&#1091;&#1078;&#1085;&#1099; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1087;&#1086; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1077; &#1054;&#1057;. &#1053;&#1072; TechNet &#1077;&#1089;&#1090;&#1100; &#1087;&#1077;&#1088;&#1077;&#1095;&#1077;&#1085;&#1100; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1081; &#1080; &#1082;&#1088;&#1072;&#1090;&#1082;&#1086;&#1077; &#1086;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077; <a href="https://technet.microsoft.com/en-us/library/dn581978.aspx">https://technet.microsoft.com/en-us/library/dn581978.aspx</a>&nbsp;&nbsp; &#1054;&#1087;&#1080;&#1089;&#1072;&#1085;&#1080;&#1077; &#1076;&#1086;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086; &#1089;&#1082;&#1091;&#1076;&#1085;&#1086;&#1077; &#1080; &#1095;&#1072;&#1089;&#1090;&#1086; &#1087;&#1088;&#1080;&#1093;&#1086;&#1076;&#1080;&#1090;&#1089;&#1103; &#1089;&#1072;&#1084;&#1086;&#1089;&#1090;&#1086;&#1103;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086; &#1079;&#1072;&#1075;&#1083;&#1103;&#1076;&#1099;&#1074;&#1072;&#1090;&#1100; &#1074; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1087;&#1086;&#1085;&#1103;&#1090;&#1100;, &#1082;&#1072;&#1082;&#1072;&#1103; &#1080;&#1085;&#1092;&#1086;&#1088;&#1084;&#1072;&#1094;&#1080;&#1103; &#1090;&#1072;&#1084; &#1093;&#1088;&#1072;&#1085;&#1080;&#1090;&#1089;&#1103;. &#1069;&#1090;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1076;&#1077;&#1083;&#1072;&#1090;&#1100;, &#1085;&#1077; &#1089;&#1086;&#1079;&#1076;&#1072;&#1074;&#1072;&#1103; &#1085;&#1080;&#1082;&#1072;&#1082;&#1080;&#1093; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1086;&#1074; &#1074;&#1088;&#1091;&#1095;&#1085;&#1091;&#1102;. &#1042; management studio &#1082;&#1083;&#1080;&#1082;&#1072;&#1077;&#1084; &#1087;&#1088;&#1072;&#1074;&#1086;&#1081; &#1082;&#1085;&#1086;&#1087;&#1082;&#1086;&#1081; &#1085;&#1072; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1080; &#1080; &#1074;&#1099;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1087;&#1091;&#1085;&#1082;&#1090; &#1084;&#1077;&#1085;&#1102; Select Top 1000 Rows:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/2.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/2.png" border="0"></a><br>&nbsp;<br>&#1055;&#1086;&#1082;&#1086;&#1087;&#1072;&#1074;&#1096;&#1080;&#1089;&#1100;, &#1103; &#1086;&#1090;&#1099;&#1089;&#1082;&#1072;&#1083; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;, &#1093;&#1088;&#1072;&#1085;&#1103;&#1097;&#1077;&#1077; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1086;&#1073; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1077; &#1080; &#1076;&#1086;&#1073;&#1072;&#1074;&#1080;&#1083; &#1077;&#1075;&#1086; &#1074; &#1089;&#1074;&#1086;&#1081; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;:<br>SELECT Netbios_Name0, Operating_System_Name_and0, SystemType0 <br>FROM v_R_System AS SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM as COMPSYS ON SYS.Resourceid= COMPSYS.Resourceid</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/3.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/3.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/3.png" border="0"></a><br>&nbsp;<br>&#1044;&#1072;&#1083;&#1077;&#1077; &#1085;&#1072;&#1084; &#1085;&#1091;&#1078;&#1085;&#1086; &#1085;&#1072;&#1081;&#1090;&#1080;, &#1075;&#1076;&#1077; &#1093;&#1088;&#1072;&#1085;&#1103;&#1090;&#1089;&#1103; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1086; &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;&#1085;&#1099;&#1093; &#1085;&#1072; &#1082;&#1083;&#1080;&#1077;&#1085;&#1090;&#1072;&#1093; &#1092;&#1072;&#1081;&#1083;&#1072;&#1093; (Software Inventory). &#1044;&#1086;&#1074;&#1086;&#1083;&#1100;&#1085;&#1086; &#1095;&#1072;&#1089;&#1090;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1091;&#1075;&#1072;&#1076;&#1072;&#1090;&#1100;, &#1082;&#1072;&#1082; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088;&#1085;&#1086; &#1073;&#1091;&#1076;&#1077;&#1090; &#1085;&#1072;&#1079;&#1099;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1072; &#1080;&#1083;&#1080; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077;. &#1042;&#1099;&#1087;&#1086;&#1083;&#1085;&#1103;&#1077;&#1084; &#1082;&#1083;&#1080;&#1082; &#1087;&#1088;&#1072;&#1074;&#1086;&#1081; &#1082;&#1085;&#1086;&#1087;&#1082;&#1086;&#1081; &#1087;&#1086; &#1087;&#1072;&#1087;&#1082;&#1077; Views &#1074; SQL Server Management Studio &#1080; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1091;&#1077;&#1084; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1081; &#1087;&#1086; &#1089;&#1083;&#1086;&#1074;&#1091; file:</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/4.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/4.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/4.png" border="0"></a><br>&nbsp;<br>&#1042; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1072;&#1093; &#1085;&#1072;&#1093;&#1086;&#1076;&#1080;&#1084; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1077; v_GS_SoftwareFile &ndash; &#1086;&#1085;&#1086;-&#1090;&#1086; &#1085;&#1072;&#1084; &#1080; &#1085;&#1091;&#1078;&#1085;&#1086;. &#1052;&#1086;&#1076;&#1080;&#1092;&#1080;&#1094;&#1080;&#1088;&#1091;&#1077;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;:</p><p>Select Netbios_Name0, Operating_System_Name_and0, SystemType0, FileName <br>FROM v_R_System as SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM AS COMPSYS ON Sys.resourceid=compsys.resourceid<br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>&nbsp;</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/5.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/5.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/5.png" border="0"></a></p><p>&#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1084;&#1086;&#1078;&#1085;&#1086; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1087;&#1086; &#1088;&#1072;&#1079;&#1083;&#1080;&#1095;&#1085;&#1099;&#1084; &#1082;&#1088;&#1080;&#1090;&#1077;&#1088;&#1080;&#1103;&#1084;, &#1085;&#1072;&#1087;&#1088;&#1080;&#1084;&#1077;&#1088;, &#1090;&#1072;&#1082;:</p><p>SELECT Netbios_Name0, Operating_System_Name_and0, SystemType0, FileName <br>FROM v_R_System AS SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM AS COMPSYS ON Sys.resourceid=compsys.resourceid<br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>WHERE FileName like '%test_file.vbs%' <br>AND Operating_System_Name_and0 like '%Workstation%' <br>AND SystemType0 like 'x64%'</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/6.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/6.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/6.png" border="0"></a></p><p style="text-align:justify;">&nbsp;<br>&#1069;&#1090;&#1086; &#1073;&#1099;&#1083; &#1087;&#1088;&#1080;&#1084;&#1077;&#1088; &#1089; &#1092;&#1080;&#1082;&#1089;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1085;&#1099;&#1084;&#1080; &#1091;&#1089;&#1083;&#1086;&#1074;&#1080;&#1103;&#1084;&#1080; &#1086;&#1090;&#1073;&#1086;&#1088;&#1072; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1086;&#1074;, &#1087;&#1086;&#1079;&#1078;&#1077; &#1084;&#1099; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090; &#1090;&#1072;&#1082;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1073;&#1088;&#1072;&#1090;&#1100; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103; &#1076;&#1083;&#1103; &#1082;&#1088;&#1080;&#1090;&#1077;&#1088;&#1080;&#1077;&#1074; &#1086;&#1090;&#1073;&#1086;&#1088;&#1072; &#1087;&#1088;&#1103;&#1084;&#1086; &#1080;&#1079; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;.</p><p style="text-align:justify;">&#1054;&#1076;&#1085;&#1072;&#1082;&#1086;, &#1082;&#1072;&#1082; &#1073;&#1099; &#1084;&#1099; &#1085;&#1077; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1086;&#1074;&#1072;&#1083;&#1080; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1099; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072;, &#1084;&#1099; &#1080;&#1084;&#1077;&#1077;&#1084; &#1087;&#1086;&#1082;&#1072; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;, &#1072; &#1085;&#1077; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1086;&#1074;.&nbsp; &#1044;&#1083;&#1103; &#1086;&#1076;&#1085;&#1086;&#1075;&#1086; &#1080; &#1090;&#1086;&#1075;&#1086; &#1078;&#1077; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072; &#1074; &#1086;&#1090;&#1095;&#1077;&#1090;&#1077; &#1084;&#1086;&#1078;&#1077;&#1090; &#1073;&#1099;&#1090;&#1100; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1089;&#1090;&#1088;&#1086;&#1095;&#1077;&#1082;, &#1090;.&#1082;. &#1085;&#1072;&#1081;&#1076;&#1077;&#1085;&#1086; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;, &#1091;&#1076;&#1086;&#1074;&#1083;&#1077;&#1090;&#1074;&#1086;&#1088;&#1103;&#1102;&#1097;&#1080;&#1093; &#1082;&#1088;&#1080;&#1090;&#1077;&#1088;&#1080;&#1103;&#1084; &#1087;&#1086;&#1080;&#1089;&#1082;&#1072;. &#1044;&#1083;&#1103; &#1090;&#1086;&#1075;&#1086; &#1095;&#1090;&#1086;&#1073;&#1099; &#1083;&#1086;&#1075;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080; &#1087;&#1077;&#1088;&#1077;&#1081;&#1090;&#1080; &#1086;&#1090; &#1089;&#1087;&#1080;&#1089;&#1082;&#1072; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074; &#1082; &#1089;&#1087;&#1080;&#1089;&#1082;&#1091; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1086;&#1074;, &#1087;&#1088;&#1080;&#1084;&#1077;&#1085;&#1103;&#1077;&#1084; &#1075;&#1088;&#1091;&#1087;&#1087;&#1080;&#1088;&#1086;&#1074;&#1082;&#1091; &#1080; &#1091;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1085;&#1077; &#1085;&#1091;&#1078;&#1085;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103; &#1080;&#1079; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;&#1072;. &#1055;&#1086;&#1076; &#1085;&#1077;&#1085;&#1091;&#1078;&#1085;&#1099;&#1084;&#1080; &#1087;&#1086;&#1083;&#1103;&#1084;&#1080; &#1074; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077; &#1103; &#1087;&#1086;&#1076;&#1088;&#1072;&#1079;&#1091;&#1084;&#1077;&#1074;&#1072;&#1102; &#1087;&#1086;&#1083;&#1103;, &#1087;&#1086; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1084; &#1084;&#1099; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1091;&#1077;&#1084; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090;, &#1085;&#1086; &#1086;&#1090;&#1086;&#1073;&#1088;&#1072;&#1078;&#1072;&#1090;&#1100; &#1080;&#1093; &#1085;&#1077; &#1093;&#1086;&#1090;&#1080;&#1084;. &#1058;&#1072;&#1082;&#1078;&#1077; &#1103; &#1087;&#1086;&#1089;&#1095;&#1080;&#1090;&#1072;&#1083; &#1085;&#1091;&#1078;&#1085;&#1099;&#1084; &#1076;&#1086;&#1073;&#1072;&#1074;&#1080;&#1090;&#1100; &#1074; &#1086;&#1090;&#1095;&#1077;&#1090; &#1077;&#1097;&#1077; &#1086;&#1076;&#1080;&#1085; &#1089;&#1090;&#1086;&#1083;&#1073;&#1077;&#1094;:</p><p>SELECT Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0<br>FROM v_R_System AS SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM AS COMPSYS ON Sys.resourceid=compsys.resourceid<br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>WHERE FileName like '%test_file.vbs%' AND Operating_System_Name_and0 like '%workstation%' AND SystemType0 like 'x64%'<br>GROUP BY Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/7.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/7.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/7.png" border="0"></a></p><p style="text-align:justify;">&nbsp;<br>&#1057;&#1072;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089; &#1087;&#1086;&#1095;&#1090;&#1080; &#1075;&#1086;&#1090;&#1086;&#1074;, &#1086;&#1089;&#1090;&#1072;&#1083;&#1086;&#1089;&#1100; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1089;&#1076;&#1077;&#1083;&#1072;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090; &#1085;&#1072; &#1077;&#1075;&#1086; &#1086;&#1089;&#1085;&#1086;&#1074;&#1077;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1086;&#1090;&#1082;&#1088;&#1099;&#1074;&#1072;&#1077;&#1084; &#1082;&#1086;&#1085;&#1089;&#1086;&#1083;&#1100; ConfigMgr, &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; Monitoring &#1080; &#1074;&#1099;&#1076;&#1077;&#1083;&#1103;&#1077;&#1084; &#1087;&#1072;&#1087;&#1082;&#1091; Reporting. &#1057;&#1087;&#1088;&#1072;&#1074;&#1072; &#1087;&#1086;&#1103;&#1074;&#1080;&#1090;&#1089;&#1103; &#1089;&#1089;&#1099;&#1083;&#1082;&#1072; &#1085;&#1072; Report Manager.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/8.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/8.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/8.png" border="0"></a><br>&nbsp;<br>&#1055;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1084; &#1087;&#1086; &#1089;&#1089;&#1099;&#1083;&#1082;&#1077;. &#1047;&#1072;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; &#1087;&#1072;&#1087;&#1082;&#1091; ConfigMgr_T01, &#1075;&#1076;&#1077; T01 &#1101;&#1090;&#1086; &#1074;&#1072;&#1096; &#1089;&#1072;&#1081;&#1090;-&#1082;&#1086;&#1076;. &#1058;&#1091;&#1090;, &#1087;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;, &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1086;&#1090;&#1076;&#1077;&#1083;&#1100;&#1085;&#1091;&#1102; &#1087;&#1072;&#1087;&#1082;&#1091; &#1076;&#1083;&#1103; &#1085;&#1072;&#1096;&#1077;&#1075;&#1086; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;: My Custom Reports. &#1042; &#1087;&#1072;&#1087;&#1082;&#1077; &#1079;&#1072;&#1087;&#1091;&#1089;&#1082;&#1072;&#1077;&#1084; Report Builder:</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/9.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/9.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/9.png" border="0"></a><br>&nbsp;<br>&#1046;&#1076;&#1077;&#1084; &#1087;&#1086;&#1082;&#1072; Report Builder &#1079;&#1072;&#1075;&#1088;&#1091;&#1079;&#1080;&#1090;&#1089;&#1103;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/10.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/10.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/10.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/10.png" border="0"></a><br>&nbsp;<br>&#1047;&#1076;&#1077;&#1089;&#1100; &#1085;&#1091;&#1078;&#1085;&#1086; &#1079;&#1072;&#1084;&#1077;&#1090;&#1080;&#1090;&#1100;, &#1095;&#1090;&#1086; &#1076;&#1083;&#1103; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1077;&#1085;&#1080;&#1103; &#1082; Reporting Services &#1087;&#1088;&#1080; &#1088;&#1072;&#1079;&#1088;&#1072;&#1073;&#1086;&#1090;&#1082;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090;&#1086;&#1074; &#1080;&#1085;&#1086;&#1075;&#1076;&#1072; &#1087;&#1088;&#1080;&#1093;&#1086;&#1076;&#1080;&#1090;&#1089;&#1103; &#1079;&#1072;&#1087;&#1091;&#1089;&#1082;&#1072;&#1090;&#1100; Report Builder, Internet Explorer &#1080; &#1076;&#1072;&#1078;&#1077; SQL Management Tools &#1089; &#1087;&#1086;&#1074;&#1099;&#1096;&#1077;&#1085;&#1085;&#1099;&#1084;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1103;&#1084;&#1080;. &#1045;&#1089;&#1083;&#1080; &#1095;&#1090;&#1086;-&#1090;&#1086; &#1085;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090;, &#1082;&#1072;&#1082; &#1101;&#1090;&#1086; &#1086;&#1078;&#1080;&#1076;&#1072;&#1077;&#1090;&#1089;&#1103; &#1080;&#1083;&#1080; &#1074;&#1099; &#1085;&#1077; &#1074;&#1080;&#1076;&#1080;&#1090;&#1077; &#1082;&#1072;&#1082;&#1080;&#1077;-&#1083;&#1080;&#1073;&#1086; &#1101;&#1083;&#1077;&#1084;&#1077;&#1085;&#1090;&#1099; &#1080;&#1085;&#1090;&#1077;&#1088;&#1092;&#1077;&#1081;&#1089;&#1072;, &#1086;&#1073;&#1098;&#1077;&#1082;&#1090;&#1099;, &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1077; &#1086;&#1078;&#1080;&#1076;&#1072;&#1077;&#1090;&#1077; &#1091;&#1074;&#1080;&#1076;&#1077;&#1090;&#1100; &ndash; &#1087;&#1088;&#1086;&#1073;&#1091;&#1081;&#1090;&#1077; Run as Administrator. &#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077;, &#1091; &#1084;&#1077;&#1085;&#1103; &#1082;&#1086;&#1085;&#1089;&#1086;&#1083;&#1100; ConfigMgr &#1079;&#1072;&#1087;&#1091;&#1097;&#1077;&#1085;&#1072; &#1089; &#1087;&#1086;&#1074;&#1099;&#1096;&#1077;&#1085;&#1085;&#1099;&#1084;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1103;&#1084;&#1080;, &#1072;, &#1089;&#1083;&#1077;&#1076;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086;, &#1080; &#1086;&#1082;&#1085;&#1086; IE &#1091; &#1084;&#1077;&#1085;&#1103; &#1090;&#1072;&#1082;&#1078;&#1077; &#1086;&#1090;&#1082;&#1088;&#1099;&#1074;&#1072;&#1077;&#1090;&#1089;&#1103; &#1089; &#1087;&#1086;&#1074;&#1099;&#1096;&#1077;&#1085;&#1085;&#1099;&#1084;&#1080; &#1087;&#1088;&#1080;&#1074;&#1080;&#1083;&#1077;&#1075;&#1080;&#1103;&#1084;&#1080;.</p><p style="text-align:justify;"><br>&#1057;&#1086;&#1079;&#1076;&#1072;&#1077;&#1084; &#1085;&#1086;&#1074;&#1099;&#1081; &#1086;&#1090;&#1095;&#1077;&#1090;, &#1074;&#1099;&#1073;&#1080;&#1088;&#1072;&#1103; Table or Matrix Wizard:</p><p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/11.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/11.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/11.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/11.png" border="0"></a><br>&nbsp;<br>&#1057;&#1086;&#1079;&#1076;&#1072;&#1077;&#1084; &#1085;&#1086;&#1074;&#1099;&#1081; Dataset, &#1087;&#1086;-&#1085;&#1072;&#1096;&#1077;&#1084;&#1091; &#1101;&#1090;&#1086; &#1085;&#1072;&#1073;&#1086;&#1088; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;. &#1040; &#1087;&#1086; &#1089;&#1091;&#1090;&#1080; &#1101;&#1090;&#1086; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;, &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; &#1084;&#1099; &#1073;&#1091;&#1076;&#1077;&#1084; &#1086;&#1090;&#1086;&#1073;&#1088;&#1072;&#1078;&#1072;&#1090;&#1100; &#1074; &#1090;&#1072;&#1073;&#1083;&#1080;&#1094;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/12.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/12.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/12.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/12.png" border="0"></a><br>&nbsp; <br>&#1053;&#1072; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1077; &#1078;&#1084;&#1077;&#1084; Browse, &#1079;&#1072;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; &#1087;&#1072;&#1087;&#1082;&#1091; ConfigMgr_&lt;&#1082;&#1086;&#1076; &#1089;&#1072;&#1081;&#1090;&#1072;&gt; &#1080; &#1074; &#1089;&#1072;&#1084;&#1086;&#1084; &#1082;&#1086;&#1085;&#1094;&#1077; &#1089;&#1087;&#1080;&#1089;&#1082;&#1072; &#1074;&#1099;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; &#1091;&#1078;&#1077; &#1089;&#1091;&#1097;&#1077;&#1089;&#1090;&#1074;&#1091;&#1102;&#1097;&#1080;&#1081; DataSource &ndash; &#1080;&#1089;&#1090;&#1086;&#1095;&#1085;&#1080;&#1082; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;, &#1090;.&#1077;. &#1073;&#1072;&#1079;&#1072; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;, &#1082; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1081; &#1073;&#1091;&#1076;&#1077;&#1084; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1072;&#1090;&#1100;&#1089;&#1103;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/13.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/13.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/13.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/13.png" border="0"></a><br>&nbsp;<br>&#1053;&#1072;&#1078;&#1080;&#1084;&#1072;&#1077;&#1084; Next &#1080; &#1087;&#1086;&#1076;&#1082;&#1083;&#1102;&#1095;&#1072;&#1077;&#1084;&#1089;&#1103;, &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1091;&#1103; &#1091;&#1095;&#1077;&#1090;&#1085;&#1099;&#1077; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1090;&#1077;&#1082;&#1091;&#1097;&#1077;&#1075;&#1086; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1103;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/14.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/14.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/14.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/14.png" border="0"></a><br>&nbsp;<br>&#1044;&#1072;&#1083;&#1100;&#1096;&#1077; &#1085;&#1072;&#1084; &#1085;&#1091;&#1078;&#1085;&#1086; &#1089;&#1082;&#1086;&#1085;&#1089;&#1090;&#1088;&#1091;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;. &#1069;&#1090;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1076;&#1077;&#1083;&#1072;&#1090;&#1100; &#1076;&#1074;&#1091;&#1084;&#1103; &#1087;&#1091;&#1090;&#1103;&#1084;&#1080;: &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102; &#1076;&#1080;&#1079;&#1072;&#1081;&#1085;&#1077;&#1088;&#1072; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072; &#1080;&#1083;&#1080; &#1087;&#1088;&#1086;&#1089;&#1090;&#1086; &#1085;&#1072;&#1087;&#1077;&#1095;&#1072;&#1090;&#1072;&#1090;&#1100; &#1082;&#1086;&#1076;. &#1059; &#1085;&#1072;&#1089; &#1077;&#1089;&#1090;&#1100; &#1075;&#1086;&#1090;&#1086;&#1074;&#1099;&#1081; &#1082;&#1086;&#1076;, &#1090;&#1072;&#1082; &#1095;&#1090;&#1086; &#1089;&#1088;&#1091;&#1079;&#1091; &#1078;&#1084;&#1077;&#1084; &#1082;&#1085;&#1086;&#1087;&#1082;&#1091; Edit as Text &#1080; &#1074;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1077;&#1084; &#1090;&#1077;&#1082;&#1089;&#1090; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072; &#1074; &#1087;&#1086;&#1083;&#1077;. &#1058;&#1091;&#1090; &#1078;&#1077; &#1084;&#1086;&#1078;&#1085;&#1086; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;, &#1085;&#1072;&#1078;&#1072;&#1074; &#1082;&#1085;&#1086;&#1087;&#1082;&#1091; Run.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/15.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/15.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/15.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/15.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/16.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/16.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/16.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/16.png" border="0"></a><br>&nbsp;<br>&nbsp;<br>&#1053;&#1072; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1081; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1077; &#1087;&#1077;&#1088;&#1077;&#1090;&#1072;&#1089;&#1082;&#1080;&#1074;&#1072;&#1077;&#1084; &#1074;&#1089;&#1077; &#1076;&#1086;&#1089;&#1090;&#1091;&#1087;&#1085;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103; &#1074; &#1086;&#1073;&#1083;&#1072;&#1089;&#1090;&#1100; Values:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/17.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/17.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/17.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/17.png" border="0"></a></p><p style="text-align:justify;">&nbsp;<br>&#1053;&#1072; &#1086;&#1089;&#1090;&#1072;&#1083;&#1100;&#1085;&#1099;&#1093; &#1089;&#1090;&#1088;&#1072;&#1085;&#1080;&#1094;&#1072;&#1093; &#1084;&#1072;&#1089;&#1090;&#1077;&#1088;&#1072; &#1086;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1077;&#1084; &#1074;&#1089;&#1077; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;. &#1055;&#1086;&#1089;&#1083;&#1077; &#1079;&#1072;&#1082;&#1088;&#1099;&#1090;&#1080;&#1103; &#1084;&#1072;&#1089;&#1090;&#1077;&#1088;&#1072; &#1080;&#1084;&#1077;&#1077;&#1084; &#1090;&#1072;&#1082;&#1091;&#1102; &#1082;&#1072;&#1088;&#1090;&#1080;&#1085;&#1091;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/18.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/18.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/18.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/18.png" border="0"></a><br>&nbsp;<br>&#1057;&#1086;&#1093;&#1088;&#1072;&#1085;&#1103;&#1077;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090; &#1085;&#1072; &#1089;&#1077;&#1088;&#1074;&#1077;&#1088;&#1077;. &#1042;&#1087;&#1088;&#1080;&#1085;&#1094;&#1080;&#1087;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090; &#1091;&#1078;&#1077; &#1084;&#1086;&#1078;&#1085;&#1086; &#1079;&#1072;&#1087;&#1091;&#1089;&#1082;&#1072;&#1090;&#1100;, &#1085;&#1086; &#1103; &#1089;&#1085;&#1072;&#1095;&#1072;&#1083;&#1072; &#1087;&#1088;&#1077;&#1076;&#1087;&#1086;&#1095;&#1077;&#1083; &#1076;&#1072;&#1090;&#1100; &#1082;&#1086;&#1083;&#1086;&#1085;&#1082;&#1072;&#1084; &#1091;&#1076;&#1086;&#1073;&#1086;&#1074;&#1072;&#1088;&#1080;&#1084;&#1099;&#1077; &#1080;&#1084;&#1077;&#1085;&#1072;, &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1080;&#1090;&#1100; &#1080;&#1093; &#1096;&#1080;&#1088;&#1080;&#1085;&#1091; &#1080; &#1086;&#1073;&#1086;&#1079;&#1085;&#1072;&#1095;&#1080;&#1090;&#1100; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1086;&#1082;. &#1058;&#1072;&#1082;&#1078;&#1077; &#1085;&#1077;&#1087;&#1083;&#1086;&#1093;&#1086; &#1073;&#1099;&#1083;&#1086; &#1073;&#1099; &#1089;&#1076;&#1077;&#1083;&#1072;&#1090;&#1100; &#1089;&#1086;&#1088;&#1090;&#1080;&#1088;&#1086;&#1074;&#1082;&#1091; &#1087;&#1086; &#1089;&#1090;&#1086;&#1083;&#1073;&#1094;&#1072;&#1084;, &#1086;&#1089;&#1090;&#1072;&#1085;&#1086;&#1074;&#1083;&#1102;&#1089;&#1100; &#1085;&#1072; &#1101;&#1090;&#1086;&#1084; &#1087;&#1086;&#1076;&#1088;&#1086;&#1073;&#1085;&#1077;&#1077;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1082;&#1083;&#1080;&#1082;&#1072;&#1077;&#1084; &#1087;&#1088;&#1072;&#1074;&#1086;&#1081; &#1082;&#1085;&#1086;&#1087;&#1082;&#1086;&#1081; &#1085;&#1072; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1077; &#1089;&#1090;&#1086;&#1083;&#1073;&#1094;&#1072; &#1089; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072;, &#1074;&#1099;&#1073;&#1080;&#1088;&#1072;&#1077;&#1084; Text Box Properties:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/19.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/19.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/19.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/19.png" border="0"></a><br>&nbsp;<br>&#1044;&#1072;&#1083;&#1077;&#1077; &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; Interactive Sorting &#1080; &#1074;&#1082;&#1083;&#1102;&#1095;&#1072;&#1077;&#1084; &#1089;&#1086;&#1088;&#1090;&#1080;&#1088;&#1086;&#1074;&#1082;&#1091;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/20.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/20.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/20.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/20.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">&#1040;&#1085;&#1072;&#1083;&#1086;&#1075;&#1080;&#1095;&#1085;&#1086; &#1085;&#1072;&#1089;&#1090;&#1088;&#1072;&#1080;&#1074;&#1072;&#1077;&#1084; &#1089;&#1086;&#1088;&#1090;&#1080;&#1088;&#1086;&#1074;&#1082;&#1091; &#1076;&#1083;&#1103; &#1074;&#1089;&#1077;&#1093; &#1086;&#1089;&#1090;&#1072;&#1083;&#1100;&#1085;&#1099;&#1093; &#1089;&#1090;&#1086;&#1083;&#1073;&#1094;&#1086;&#1074;.</p><p style="text-align:justify;">&#1058;&#1077;&#1087;&#1077;&#1088;&#1100; &#1088;&#1072;&#1079;&#1073;&#1077;&#1088;&#1077;&#1084;&#1089;&#1103; &#1089; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072;&#1084;&#1080; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;. &#1057;&#1077;&#1081;&#1095;&#1072;&#1089; &#1084;&#1099; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1091;&#1077;&#1084; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090; &#1087;&#1086; &#1078;&#1077;&#1089;&#1090;&#1082;&#1086; &#1079;&#1072;&#1076;&#1072;&#1085;&#1085;&#1099;&#1084; &#1082;&#1088;&#1080;&#1090;&#1077;&#1088;&#1080;&#1103;&#1084; &#1074; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1077;. &#1071; &#1093;&#1086;&#1095;&#1091;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100; &#1080;&#1084;&#1077;&#1083; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1080;&#1079;&#1084;&#1077;&#1085;&#1103;&#1090;&#1100; &#1101;&#1090;&#1080; &#1082;&#1088;&#1080;&#1090;&#1077;&#1088;&#1080;&#1080; &#1087;&#1088;&#1080; &#1079;&#1072;&#1087;&#1091;&#1089;&#1082;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1084;&#1085;&#1077; &#1085;&#1091;&#1078;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1080; &#1085;&#1072;&#1073;&#1086;&#1088;&#1099; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;, &#1080;&#1079; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1093; &#1073;&#1091;&#1076;&#1091;&#1090; &#1087;&#1086;&#1076;&#1075;&#1088;&#1091;&#1078;&#1072;&#1090;&#1100;&#1089;&#1103; &#1089;&#1087;&#1080;&#1089;&#1082;&#1080; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1099;&#1093; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; &#1076;&#1083;&#1103; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074;. &#1044;&#1086;&#1073;&#1072;&#1074;&#1080;&#1084; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; OSNAME, &#1087;&#1088;&#1077;&#1076;&#1074;&#1072;&#1088;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1074; &#1077;&#1097;&#1077; &#1086;&#1076;&#1080;&#1085; &#1085;&#1072;&#1073;&#1086;&#1088; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093;, &#1080;&#1079; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; &#1073;&#1091;&#1076;&#1077;&#1090; &#1087;&#1086;&#1076;&#1075;&#1088;&#1091;&#1078;&#1072;&#1090;&#1100;&#1089;&#1103; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1077;&#1075;&#1086; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1099;&#1093; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/21.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/21.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/21.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/21.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">SELECT distinct Operating_System_Name_and0 from v_R_System<br>WHERE Operating_System_Name_and0 is not null</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/22.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/22.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/22.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/22.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/23.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/23.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/23.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/23.png" border="0"></a><br>&nbsp;<br>&nbsp;<br>&#1055;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; &#1075;&#1086;&#1090;&#1086;&#1074;, &#1090;&#1077;&#1087;&#1077;&#1088;&#1100; &#1077;&#1075;&#1086; &#1085;&#1091;&#1078;&#1085;&#1086; &#1079;&#1072;&#1076;&#1077;&#1081;&#1089;&#1090;&#1074;&#1086;&#1074;&#1072;&#1090;&#1100; &#1074; &#1085;&#1072;&#1096;&#1077;&#1084; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1086;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1077;. &#1050;&#1083;&#1080;&#1082;&#1072;&#1077;&#1084; &#1087;&#1088;&#1072;&#1074;&#1086;&#1081; &#1082;&#1085;&#1086;&#1087;&#1082;&#1086;&#1081; &#1087;&#1086; Dataset1 &#1080; &#1088;&#1077;&#1076;&#1072;&#1082;&#1090;&#1080;&#1088;&#1091;&#1077;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/24.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/24.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/24.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/24.png" border="0"></a>&nbsp;</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/25.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/25.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/25.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/25.png" border="0"></a>&nbsp;</p><p style="text-align:justify;"></p><p style="text-align:justify;">&#1057;&#1077;&#1081;&#1095;&#1072;&#1089; &#1084;&#1086;&#1078;&#1085;&#1086; &#1074; &#1086;&#1095;&#1077;&#1088;&#1077;&#1076;&#1085;&#1086;&#1081; &#1088;&#1072;&#1079; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1080;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090; &#1080; &#1087;&#1088;&#1086;&#1074;&#1077;&#1088;&#1080;&#1090;&#1100; &#1082;&#1072;&#1082; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;. &#1054;&#1085; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090;, &#1085;&#1086; &#1084;&#1085;&#1077; &#1101;&#1090;&#1086;&#1075;&#1086; &#1084;&#1072;&#1083;&#1086;. &#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1074;&#1072;&#1088;&#1080;&#1072;&#1085;&#1090;&#1077; &#1084;&#1099; &#1084;&#1086;&#1078;&#1077;&#1084; &#1074;&#1099;&#1073;&#1088;&#1072;&#1090;&#1100; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1086;&#1076;&#1085;&#1091; &#1080;&#1079; &#1086;&#1087;&#1077;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1093; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;, &#1072; &#1103; &#1073;&#1099; &#1093;&#1086;&#1090;&#1077;&#1083; &#1080;&#1084;&#1077;&#1090;&#1100; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1086;&#1089;&#1090;&#1100; &#1090;&#1072;&#1082;&#1078;&#1077; &#1087;&#1086;&#1089;&#1084;&#1086;&#1090;&#1088;&#1077;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090; &#1087;&#1086; &#1074;&#1089;&#1077;&#1084; &#1086;&#1087;&#1077;&#1088;&#1072;&#1094;&#1080;&#1086;&#1085;&#1085;&#1099;&#1084; &#1089;&#1080;&#1089;&#1090;&#1077;&#1084;&#1072;&#1084; &#1089;&#1088;&#1072;&#1079;&#1091;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1085;&#1072;&#1084; &#1087;&#1086;&#1085;&#1072;&#1076;&#1086;&#1073;&#1080;&#1090;&#1100;&#1089;&#1103; &#1089;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1074;&#1089;&#1087;&#1086;&#1084;&#1086;&#1075;&#1072;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099;&#1081; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; &#1080; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1099; &#1074; OSNAME_Dataset &#1080; Dataset1 (&#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1086;&#1081;). &#1055;&#1088;&#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1085;&#1080;&#1080; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074; &#1085;&#1091;&#1078;&#1085;&#1086; &#1087;&#1086;&#1084;&#1085;&#1080;&#1090;&#1100;, &#1095;&#1090;&#1086; &#1080;&#1093; &#1080;&#1084;&#1077;&#1085;&#1072; &#1095;&#1091;&#1074;&#1089;&#1090;&#1074;&#1080;&#1090;&#1077;&#1083;&#1100;&#1085;&#1099; &#1082; &#1088;&#1077;&#1075;&#1080;&#1089;&#1090;&#1088;&#1091;.<br>&nbsp;<br>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/26.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/26.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/26.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/26.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/27.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/27.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/27.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/27.png" border="0"></a></p><p style="text-align:justify;"></p><p style="text-align:justify;">&#1052;&#1077;&#1085;&#1103;&#1077;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089; &#1074; OSNAME_Dataset:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/28.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/28.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/28.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/28.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">&#1048;&#1079;&#1084;&#1077;&#1085;&#1103;&#1077;&#1084; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089; &#1074; Dataset1</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/29.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/29.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/29.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/29.png" border="0"></a><br>&nbsp;<br>SELECT Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0<br>FROM v_R_System AS SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM AS COMPSYS ON Sys.resourceid=compsys.resourceid<br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>WHERE FileName like '%test_file.vbs%' <br>AND (@OSNAME = @AllValueParameter OR&nbsp; SYS.Operating_System_Name_and0=@OSNAME)<br>AND SystemType0 like '%x64%'<br>GROUP BY Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0</p><p style="text-align:justify;">&#1055;&#1086;&#1088;&#1103;&#1076;&#1086;&#1082; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074; &#1090;&#1072;&#1082;&#1078;&#1077; &#1080;&#1084;&#1077;&#1077;&#1090; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077;. &#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077; AllValueParameter &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1073;&#1099;&#1090;&#1100; &#1087;&#1077;&#1088;&#1074;&#1099;&#1084;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/30.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/30.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/30.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/30.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">&#1055;&#1086;&#1076;&#1087;&#1088;&#1072;&#1074;&#1083;&#1102; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; OSNAME, &#1095;&#1090;&#1086;&#1073;&#1099; &#1086;&#1085; &#1087;&#1088;&#1080;&#1085;&#1080;&#1084;&#1072;&#1083;&nbsp; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077; &laquo;ALL&raquo; &#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102;. &#1052;&#1086;&#1078;&#1085;&#1086; &#1103;&#1074;&#1085;&#1086; &#1091;&#1082;&#1072;&#1079;&#1072;&#1090;&#1100; ALL &#1074; Default Values:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/31.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/31.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/31.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/31.png" border="0"></a><br>&nbsp;<br>&#1051;&#1080;&#1073;&#1086; &#1087;&#1086;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1090;&#1100; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077; &#1076;&#1088;&#1091;&#1075;&#1086;&#1075;&#1086; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/32.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/32.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/32.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/32.png" border="0"></a><br>&nbsp;<br>&#1042; &#1076;&#1072;&#1085;&#1085;&#1086;&#1084; &#1089;&#1083;&#1091;&#1095;&#1072;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1090;&#1100; &#1073;&#1091;&#1076;&#1091;&#1090; &#1086;&#1073;&#1072; &#1074;&#1072;&#1088;&#1080;&#1072;&#1085;&#1090;&#1072;, &#1090;.&#1082;. &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1077; &#1087;&#1086; &#1091;&#1084;&#1086;&#1083;&#1095;&#1072;&#1085;&#1080;&#1102; &#1076;&#1083;&#1103; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072; AllValueParameter &#1090;&#1072;&#1082;&#1078;&#1077; &#1088;&#1072;&#1074;&#1085;&#1086; &laquo;ALL&raquo;.<br>&#1059; &#1085;&#1072;&#1089; &#1077;&#1089;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090; &#1089; &#1086;&#1076;&#1085;&#1080;&#1084; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1084;. &#1040;&#1085;&#1072;&#1083;&#1086;&#1075;&#1080;&#1095;&#1085;&#1086; &#1076;&#1086;&#1073;&#1072;&#1074;&#1083;&#1103;&#1077;&#1084; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; SYSTEMTYPE (&#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1072;) &#1089; &#1085;&#1072;&#1073;&#1086;&#1088;&#1086;&#1084; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; SYSTEMTYPE_Dataset, &#1074; &#1082;&#1086;&#1090;&#1086;&#1088;&#1086;&#1084; &#1073;&#1091;&#1076;&#1077;&#1090; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1099;&#1093; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; &#1076;&#1083;&#1103; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/33.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/33.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/33.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/33.png" border="0"></a><br>&nbsp;<br>SELECT @AllValueParameter AS SystemType0<br>UNION ALL<br>SELECT DISTINCT SystemType0<br>FROM v_GS_COMPUTER_SYSTEM<br>&nbsp;<br>&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/34.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/34.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/34.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/34.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/35.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/35.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/35.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/35.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/36.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/36.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/36.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/36.png" border="0"></a><br>&nbsp;<br>&#1044;&#1086;&#1073;&#1072;&#1074;&#1083;&#1103;&#1077;&#1084; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; SYSTEMTYPE &#1074; &#1085;&#1072;&#1096; &#1086;&#1089;&#1085;&#1086;&#1074;&#1085;&#1086;&#1081; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/37.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/37.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/37.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/37.png" border="0"></a><br>&nbsp;<br>SELECT Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0<br>FROM v_R_System AS SYS <br>INNER JOIN v_GS_COMPUTER_SYSTEM AS COMPSYS ON Sys.resourceid=compsys.resourceid<br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>WHERE FileName like '%test_file.vbs%' <br>AND (@OSNAME = @AllValueParameter OR&nbsp; SYS.Operating_System_Name_and0=@OSNAME)<br>AND (@SYSTEMTYPE = @AllValueParameter OR&nbsp; SystemType0 =@SYSTEMTYPE)<br>GROUP BY Netbios_Name0, Operating_System_Name_and0, Distinguished_Name0</p><p style="text-align:justify;">&#1053;&#1072; &#1074;&#1099;&#1093;&#1086;&#1076;&#1077; &#1087;&#1086;&#1083;&#1091;&#1095;&#1072;&#1077;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090; &#1090;&#1072;&#1082;&#1086;&#1075;&#1086; &#1074;&#1080;&#1076;&#1072;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/38.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/38.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/38.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/38.png" border="0"></a><br>&nbsp;<br>&#1042;&#1089;&#1077; &#1088;&#1072;&#1073;&#1086;&#1090;&#1072;&#1077;&#1090;, &#1085;&#1086; &#1084;&#1085;&#1077; &#1101;&#1090;&#1086;&#1075;&#1086; &#1074;&#1089;&#1077; &#1077;&#1097;&#1077; &#1085;&#1077;&#1076;&#1086;&#1089;&#1090;&#1072;&#1090;&#1086;&#1095;&#1085;&#1086;. &#1053;&#1072; &#1101;&#1090;&#1086;&#1090; &#1088;&#1072;&#1079; &#1103; &#1093;&#1086;&#1095;&#1091;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1076;&#1086;&#1089;&#1090;&#1091;&#1087;&#1085;&#1099;&#1093; &#1076;&#1083;&#1103; &#1074;&#1099;&#1073;&#1086;&#1088;&#1072; &#1054;&#1057; &#1084;&#1077;&#1085;&#1103;&#1083;&#1089;&#1103; &#1074; &#1079;&#1072;&#1074;&#1080;&#1089;&#1080;&#1084;&#1086;&#1089;&#1090;&#1080; &#1086;&#1090; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1086;&#1081; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1099;. &#1069;&#1090;&#1086;&#1075;&#1086; &#1084;&#1086;&#1078;&#1085;&#1086; &#1076;&#1086;&#1073;&#1080;&#1090;&#1100;&#1089;&#1103; &#1089; &#1087;&#1086;&#1084;&#1086;&#1097;&#1100;&#1102; &#1082;&#1072;&#1089;&#1082;&#1072;&#1076;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1103; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1086;&#1074;. &#1050;&#1072;&#1089;&#1082;&#1072;&#1076;&#1080;&#1088;&#1086;&#1074;&#1072;&#1085;&#1080;&#1077; &#1087;&#1086;&#1079;&#1074;&#1086;&#1083;&#1103;&#1077;&#1090; &#1076;&#1080;&#1085;&#1072;&#1084;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080; &#1087;&#1086;&#1083;&#1091;&#1095;&#1072;&#1090;&#1100; &#1089;&#1087;&#1080;&#1089;&#1086;&#1082; &#1074;&#1086;&#1079;&#1084;&#1086;&#1078;&#1085;&#1099;&#1093; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1081; &#1076;&#1083;&#1103; &#1086;&#1076;&#1085;&#1086;&#1075;&#1086; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072; &#1074; &#1079;&#1072;&#1074;&#1080;&#1089;&#1080;&#1084;&#1086;&#1089;&#1090;&#1080; &#1086;&#1090; &#1079;&#1085;&#1072;&#1095;&#1077;&#1085;&#1080;&#1103; &#1076;&#1088;&#1091;&#1075;&#1086;&#1075;&#1086;. &#1042; &#1084;&#1086;&#1077;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090;&#1077; &#1103; &#1089;&#1085;&#1072;&#1095;&#1072;&#1083;&#1072; &#1093;&#1086;&#1095;&#1091; &#1074;&#1099;&#1073;&#1088;&#1072;&#1090;&#1100; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1091; &#1054;&#1057;, &#1072; &#1079;&#1072;&#1090;&#1077;&#1084; &#1091;&#1078;&#1077; &#1086;&#1087;&#1088;&#1077;&#1076;&#1077;&#1083;&#1080;&#1090;&#1100;&#1089;&#1103; &#1089; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1054;&#1057;. &#1057;&#1087;&#1080;&#1089;&#1086;&#1082; &#1080;&#1084;&#1077;&#1085; &#1054;&#1057; &#1076;&#1086;&#1083;&#1078;&#1077;&#1085; &#1092;&#1086;&#1088;&#1084;&#1080;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100;&#1089;&#1103; &#1076;&#1080;&#1085;&#1072;&#1084;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;, &#1074; &#1079;&#1072;&#1074;&#1080;&#1089;&#1080;&#1084;&#1086;&#1089;&#1090;&#1080; &#1086;&#1090; &#1074;&#1099;&#1073;&#1088;&#1072;&#1085;&#1085;&#1086;&#1081; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1099;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1090;&#1088;&#1077;&#1073;&#1091;&#1077;&#1090;&#1089;&#1103; &#1088;&#1072;&#1089;&#1087;&#1086;&#1083;&#1086;&#1078;&#1080;&#1090;&#1100; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1099; &#1074; &#1089;&#1083;&#1077;&#1076;&#1091;&#1102;&#1097;&#1077;&#1084; &#1087;&#1086;&#1088;&#1103;&#1076;&#1082;&#1077;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/39.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/39.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/39.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/39.png" border="0"></a><br>&nbsp;<br>&#1048; &#1080;&#1079;&#1084;&#1077;&#1085;&#1080;&#1090;&#1100; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089; &#1085;&#1072;&#1073;&#1086;&#1088;&#1072; &#1076;&#1072;&#1085;&#1085;&#1099;&#1093; OSNAME_Dataset &#1090;&#1072;&#1082;&#1080;&#1084; &#1086;&#1073;&#1088;&#1072;&#1079;&#1086;&#1084;, &#1095;&#1090;&#1086;&#1073;&#1099; &#1092;&#1080;&#1083;&#1100;&#1090;&#1088;&#1086;&#1074;&#1072;&#1090;&#1100; &#1088;&#1077;&#1079;&#1091;&#1083;&#1100;&#1090;&#1072;&#1090; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072; &#1087;&#1086; &#1090;&#1080;&#1087;&#1091; &#1072;&#1088;&#1093;&#1080;&#1090;&#1077;&#1082;&#1090;&#1091;&#1088;&#1099;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1085;&#1072;&#1084; &#1087;&#1086;&#1085;&#1072;&#1076;&#1086;&#1073;&#1080;&#1090;&#1089;&#1103; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1076;&#1072;&#1085;&#1085;&#1099;&#1077; &#1080;&#1079; &#1087;&#1088;&#1077;&#1076;&#1089;&#1090;&#1072;&#1074;&#1083;&#1077;&#1085;&#1080;&#1103; v_GS_COMPUTER_SYSTEM</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/40.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/40.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/40.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/40.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">SELECT @AllValueParameter AS Operating_System_Name_and0<br>UNION ALL<br>SELECT distinct Operating_System_Name_and0 FROM v_R_System AS SYS<br>INNER JOIN v_GS_Computer_System AS COMPSYS<br>ON SYS.ResourceID=COMPSYS.ResourceID<br>WHERE Operating_System_Name_and0 is not null<br>AND SystemType0=@SYSTEMTYPE</p><p style="text-align:justify;">&#1048;&#1090;&#1072;&#1082;, &#1079;&#1072;&#1082;&#1086;&#1085;&#1095;&#1080;&#1074; &#1089; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072;&#1084;&#1080;, &#1103; &#1087;&#1086;&#1076;&#1091;&#1084;&#1072;&#1083;: &#1072; &#1095;&#1090;&#1086; &#1077;&#1089;&#1083;&#1080; &#1085;&#1072; &#1082;&#1072;&#1082;&#1086;&#1084;-&#1083;&#1080;&#1073;&#1086; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1077; &#1087;&#1088;&#1080;&#1089;&#1091;&#1090;&#1089;&#1090;&#1074;&#1091;&#1077;&#1090; &#1085;&#1077;&#1089;&#1082;&#1086;&#1083;&#1100;&#1082;&#1086; &#1080;&#1089;&#1082;&#1086;&#1084;&#1099;&#1093; &#1092;&#1072;&#1081;&#1083;&#1086;&#1074;? &#1053;&#1072;&#1074;&#1077;&#1088;&#1085;&#1086;&#1077;, &#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1077;&#1083;&#1100; &#1079;&#1072;&#1093;&#1086;&#1095;&#1077;&#1090; &#1091;&#1079;&#1085;&#1072;&#1090;&#1100;, &#1075;&#1076;&#1077; &#1083;&#1077;&#1078;&#1080;&#1090; &#1082;&#1072;&#1078;&#1076;&#1099;&#1081; &#1080;&#1079; &#1085;&#1080;&#1093;? &#1069;&#1090;&#1091; &#1079;&#1072;&#1076;&#1072;&#1095;&#1091; &#1084;&#1099; &#1088;&#1077;&#1096;&#1080;&#1084;, &#1089;&#1086;&#1079;&#1076;&#1072;&#1074; &#1077;&#1097;&#1077; &#1086;&#1076;&#1080;&#1085; &#1086;&#1090;&#1095;&#1077;&#1090;, &#1074; &#1082;&#1086;&#1090;&#1086;&#1088;&#1099;&#1081; &#1084;&#1086;&#1078;&#1085;&#1086; &#1073;&#1091;&#1076;&#1077;&#1090; &#1087;&#1077;&#1088;&#1077;&#1081;&#1090;&#1080;, &#1082;&#1083;&#1080;&#1082;&#1085;&#1091;&#1074; &#1087;&#1086; &#1080;&#1084;&#1077;&#1085;&#1080; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072; &#1074; &#1087;&#1077;&#1088;&#1074;&#1086;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090;&#1077;. &#1042;&#1086; &#1074;&#1090;&#1086;&#1088;&#1086;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090;&#1077; &#1073;&#1091;&#1076;&#1077;&#1090; &#1074;&#1089;&#1077;&#1075;&#1086; &#1086;&#1076;&#1080;&#1085; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; &ndash; &#1080;&#1084;&#1103; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072;.</p><p style="text-align:justify;"><br>&#1058;&#1086;&#1095;&#1085;&#1086; &#1090;&#1072;&#1082; &#1078;&#1077;, &#1082;&#1072;&#1082; &#1076;&#1083;&#1103; &#1087;&#1077;&#1088;&#1074;&#1086;&#1075;&#1086; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;, &#1079;&#1072;&#1087;&#1091;&#1089;&#1082;&#1072;&#1077;&#1084; Report Builder &#1076;&#1077;&#1083;&#1072;&#1077;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090; &#1085;&#1072; &#1086;&#1089;&#1085;&#1086;&#1074;&#1077; &#1079;&#1072;&#1087;&#1088;&#1086;&#1089;&#1072;:<br>SELECT FileName, FilePath<br>FROM v_R_System as SYS <br>INNER JOIN v_GS_SoftwareFile AS SF ON sys.ResourceID=SF.ResourceID<br>WHERE Netbios_Name0=@COMPUTERNAME AND FileName like '%test_file.vbs%'</p><p style="text-align:justify;">&#1055;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088; COMPUTERNAME &#1089;&#1086;&#1079;&#1076;&#1072;&#1083;&#1089;&#1103; &#1072;&#1074;&#1090;&#1086;&#1084;&#1072;&#1090;&#1080;&#1095;&#1077;&#1089;&#1082;&#1080;. &#1042; &#1079;&#1072;&#1075;&#1086;&#1083;&#1086;&#1074;&#1082;&#1077; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072; &#1087;&#1086;&#1076;&#1089;&#1090;&#1072;&#1074;&#1080;&#1084; &#1080;&#1084;&#1103; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072;. &#1044;&#1083;&#1103; &#1101;&#1090;&#1086;&#1075;&#1086; &#1082;&#1083;&#1080;&#1082;&#1072;&#1077;&#1084; &#1087;&#1088;&#1072;&#1074;&#1086;&#1081; &#1082;&#1085;&#1086;&#1087;&#1082;&#1086;&#1081; &#1084;&#1099;&#1096;&#1080; &#1085;&#1072; &#1087;&#1086;&#1083;&#1077;, &#1075;&#1076;&#1077; &#1085;&#1072;&#1087;&#1080;&#1089;&#1072;&#1085;&#1086; Click to add title, &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; TextBox properties.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/41.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/41.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/41.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/41.png" border="0"></a><br>&nbsp;</p><p style="text-align:justify;">&#1042; &#1087;&#1086;&#1083;&#1077; Value &#1074;&#1087;&#1080;&#1089;&#1099;&#1074;&#1072;&#1077;&#1084; [@COMPUTERNEME]</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/42.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/42.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/42.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/42.png" border="0"></a><br>&nbsp;<br>&#1053;&#1077; &#1079;&#1072;&#1073;&#1099;&#1074;&#1072;&#1077;&#1084; &#1089;&#1086;&#1093;&#1088;&#1072;&#1085;&#1103;&#1090;&#1100;&#1089;&#1103;. &#1053;&#1072;&#1084; &#1085;&#1091;&#1078;&#1085;&#1086; &#1073;&#1091;&#1076;&#1077;&#1090; &#1087;&#1077;&#1088;&#1077;&#1076;&#1072;&#1090;&#1100; &#1089;&#1086;&#1076;&#1077;&#1088;&#1078;&#1080;&#1084;&#1086;&#1077; &#1103;&#1095;&#1077;&#1081;&#1082;&#1080; &#1089; &#1080;&#1084;&#1077;&#1085;&#1077;&#1084; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072; &#1080;&#1079; &#1087;&#1077;&#1088;&#1074;&#1086;&#1075;&#1086; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072; &#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1087;&#1072;&#1088;&#1072;&#1084;&#1077;&#1090;&#1088;&#1072; &#1074;&#1086; &#1074;&#1090;&#1086;&#1088;&#1086;&#1081; &#1086;&#1090;&#1095;&#1077;&#1090;. &#1042;&#1099;&#1087;&#1086;&#1083;&#1085;&#1103;&#1077;&#1084; &#1076;&#1074;&#1086;&#1081;&#1085;&#1086;&#1081; &#1082;&#1083;&#1080;&#1082; &#1085;&#1072; &#1103;&#1095;&#1077;&#1081;&#1082;&#1077; &#1089; &#1085;&#1072;&#1076;&#1087;&#1080;&#1089;&#1100;&#1102; Netbios_Name0. &#1042; &#1087;&#1086;&#1103;&#1074;&#1080;&#1074;&#1096;&#1077;&#1084;&#1089;&#1103; &#1086;&#1082;&#1085;&#1077; &#1087;&#1077;&#1088;&#1077;&#1093;&#1086;&#1076;&#1080;&#1084; &#1074; &#1088;&#1072;&#1079;&#1076;&#1077;&#1083; Action &#1080; &#1074;&#1099;&#1089;&#1090;&#1072;&#1074;&#1083;&#1103;&#1077;&#1084; &#1085;&#1072;&#1089;&#1090;&#1088;&#1086;&#1081;&#1082;&#1080; &#1074; &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1080;&#1080; &#1089;&#1086; &#1089;&#1082;&#1088;&#1080;&#1085;&#1096;&#1086;&#1090;&#1086;&#1084; &#1085;&#1080;&#1078;&#1077;, &#1091;&#1082;&#1072;&#1079;&#1072;&#1074; &#1084;&#1077;&#1089;&#1090;&#1086;&#1087;&#1086;&#1083;&#1086;&#1078;&#1077;&#1085;&#1080;&#1077; &#1074;&#1090;&#1086;&#1088;&#1086;&#1075;&#1086; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072;.</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/43.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/43.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/43.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/43.png" border="0"></a><br>&nbsp;<br>&#1048;&#1084;&#1103; &#1082;&#1086;&#1084;&#1087;&#1100;&#1102;&#1090;&#1077;&#1088;&#1072; &#1074; &#1075;&#1083;&#1072;&#1074;&#1085;&#1086;&#1084; &#1086;&#1090;&#1095;&#1077;&#1090;&#1077; &#1073;&#1091;&#1076;&#1077;&#1090; &#1082;&#1083;&#1080;&#1082;&#1072;&#1073;&#1077;&#1083;&#1100;&#1085;&#1099;&#1084;, &#1090;&#1072;&#1082; &#1095;&#1090;&#1086; &#1103; &#1086;&#1092;&#1086;&#1088;&#1084;&#1083;&#1102; &#1077;&#1075;&#1086; &#1074; &#1089;&#1090;&#1080;&#1083;&#1077; &#1075;&#1080;&#1087;&#1077;&#1088;&#1089;&#1089;&#1099;&#1083;&#1082;&#1080;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/44.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/44.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/44.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/44.png" border="0"></a><br>&nbsp;<br>&#1055;&#1086;&#1079;&#1076;&#1088;&#1072;&#1074;&#1083;&#1103;&#1102;, &#1084;&#1099; &#1079;&#1072;&#1082;&#1086;&#1085;&#1095;&#1080;&#1083;&#1080; &#1080; &#1074;&#1086;&#1090; &#1095;&#1090;&#1086; &#1087;&#1086;&#1083;&#1091;&#1095;&#1080;&#1083;&#1086;&#1089;&#1100; &#1074; &#1080;&#1090;&#1086;&#1075;&#1077;:</p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/45.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/45.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/45.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/45.png" border="0"></a></p><p style="text-align:justify;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/46.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/46.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/96/22/46.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-96-22/46.png" border="0"></a><br><br><br>&#1061;&#1080;&#1085;&#1090;&#1099;:</p><ul>
<li style="text-align:justify;">&#1063;&#1090;&#1086;&#1073;&#1099; &#1085;&#1077; &#1087;&#1088;&#1080;&#1076;&#1091;&#1084;&#1099;&#1074;&#1072;&#1090;&#1100; &#1076;&#1080;&#1079;&#1072;&#1081;&#1085; &#1086;&#1090;&#1095;&#1077;&#1090;&#1072; &#1082;&#1072;&#1078;&#1076;&#1099;&#1081; &#1088;&#1072;&#1079;, &#1084;&#1086;&#1078;&#1085;&#1086; &#1089;&#1086;&#1079;&#1076;&#1072;&#1090;&#1100; &#1087;&#1091;&#1089;&#1090;&#1086;&#1081; &#1086;&#1090;&#1095;&#1077;&#1090;, &#1089;&#1086;&#1086;&#1090;&#1074;&#1077;&#1090;&#1089;&#1090;&#1074;&#1091;&#1102;&#1097;&#1080;&#1081; &#1074;&#1072;&#1096;&#1080;&#1084; &#1082;&#1086;&#1088;&#1087;&#1086;&#1088;&#1072;&#1090;&#1080;&#1074;&#1085;&#1099;&#1084; &#1089;&#1090;&#1072;&#1085;&#1076;&#1072;&#1088;&#1090;&#1072;&#1084; &#1080; &#1080;&#1089;&#1087;&#1086;&#1083;&#1100;&#1079;&#1086;&#1074;&#1072;&#1090;&#1100; &#1077;&#1075;&#1086; &#1074; &#1082;&#1072;&#1095;&#1077;&#1089;&#1090;&#1074;&#1077; &#1086;&#1090;&#1087;&#1088;&#1072;&#1074;&#1085;&#1086;&#1081; &#1090;&#1086;&#1095;&#1082;&#1080; &#1087;&#1088;&#1080; &#1089;&#1086;&#1079;&#1076;&#1072;&#1085;&#1080;&#1080; &#1085;&#1086;&#1074;&#1099;&#1093; &#1086;&#1090;&#1095;&#1077;&#1090;&#1086;&#1074;.</li>
<li style="text-align:justify;">&#1057;&#1086;&#1079;&#1076;&#1072;&#1074;&#1072;&#1090;&#1100; &#1086;&#1090;&#1095;&#1077;&#1090;&#1099; &#1084;&#1086;&#1078;&#1085;&#1086; &#1085;&#1077; &#1090;&#1086;&#1083;&#1100;&#1082;&#1086; &#1074; Report Builder, &#1077;&#1089;&#1090;&#1100; &#1077;&#1097;&#1077; &#1090;&#1072;&#1082;&#1086;&#1081; &#1080;&#1085;&#1089;&#1090;&#1088;&#1091;&#1084;&#1077;&#1085;&#1090; &#1082;&#1072;&#1082; Business Intelligence Development Studio</li>
</ul></p>
]]></content:encoded>
    </item>
  </channel>
</rss>