none
Перенести ввод данных пользователем в Описание Запроса на обслуживание SCSM2012 RRS feed

  • Вопрос

  • Добрый день коллеги!

    прошу помощи

    подскажите как можно перенести данные введенные пользователем в Описание запроса с более читаемым видом, делать это можно как я понимаю при помощи Оркестратора, но как??

    5 марта 2013 г. 7:54

Ответы

  • Если изначальная тема ещё актуальна, то я разобрался как это делается. Вот мой пост с наглядным примером:

    http://social.technet.microsoft.com/Forums/en-US/administration/thread/47d6af2c-fe99-4b18-b6d1-5283390ecf14

    • Предложено в качестве ответа Dismantled 13 марта 2013 г. 20:11
    • Помечено в качестве ответа _CoopeR_ 14 марта 2013 г. 5:06
    13 марта 2013 г. 20:11
  • Какая-то беда с вашим пакетом. У меня не получилось его "оживить". Вероятно, что-то было сделано не так изначально. Например, откуда взялось это?

          <Reference Alias="Alias_13daa0df_4040_4e8b_bf35_27a047d9e5e8">
            <ID>Microsoft.EnterpriseManagement.ServiceManager.Authoring.Forms</ID>
            <Version>7.5.2905.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>

    Вот я сделал МП под Вашу задачу. Попробуйте разобраться и сделать всё с самого начала. Если не получится, сделаю детальную инструкцию.
    https://skydrive.live.com/redir?resid=DD4BD3AD28241F53!158
    • Помечено в качестве ответа _CoopeR_ 7 марта 2013 г. 12:19
    7 марта 2013 г. 10:35

Все ответы

  • А решение с созданием своей формы запроса и класса, с требуемыми полями не подходит? Какова изначальная задача?

    5 марта 2013 г. 8:58
  • задача такова чтобы это было в читабельном виде. Пробовал через создание новой формы, но видимо что то я недопонял, делая новую форму она применяется ко всему, т.е. от этого страдают и другие виды запросов, а так конечно легче и красивей было бы если бы была конкретная форма под это дело

    • Изменено _CoopeR_ 5 марта 2013 г. 9:16
    5 марта 2013 г. 9:15
  • В создании собственных форм нет ничего сложного, как оказалось. Вот тут у меня получилось разобраться окончательно:
    http://social.technet.microsoft.com/Forums/en-US/customization/thread/18a8b024-8b39-4deb-8e57-1c9686776c90

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

    Мне кажется, Вам нужно двигаться по этому же пути - через кастомные формы.

    5 марта 2013 г. 9:42
  • Сделать рабочий процесс, который после создания запрос формиурет описание из введенных значений.


    SCSMSolutions
    email: freemanru (at) gmail (dot) com

    • Предложено в качестве ответа Dismantled 28 сентября 2013 г. 23:59
    5 марта 2013 г. 10:22
    Модератор
  • а как это осуществить натолкните на мысль плиз, если можно не абстрактную а ближе к существу, буду благодарен
    6 марта 2013 г. 5:56
  • т.о. я правильно понимаю что можно создавать несколько различных форм и они не будут мешать друг другу?
    6 марта 2013 г. 10:26
  • т.о. я правильно понимаю что можно создавать несколько различных форм и они не будут мешать друг другу?

    Можно и нужно.

    Только вот у меня, по какой-то злой иронии судьбы, со вчерашнего дня опять не получается создать рабочую независимую форму того же запроса на обслуживание... Два дня назад всё получалось, а сегодня, делая те же самые шаги, нулевой результат. Созданный класс не отображается в библиотеке классов на этапе создания шаблона. Хоть ты тресни. Есть подозрение что это очередной глюк Авторинг Тула, из серии несохранения длл-ек.

    Как получится, десять раз повторю и напишу инструкцию человеческую. А то во всём инете ни одного нормального step-by-step по этой теме, кроме инструкций на тему модифиации дефолтного инцидента. И "отцы" технета тоже гордо молчат. Кстати, англоязычный технет как-то более отзывчив и насыщен.

    CoopeR, а не подскажете когда у Вас появилась возможность постить изображения?


    • Изменено Dismantled 6 марта 2013 г. 11:53
    6 марта 2013 г. 11:49
  • CoopeR, а не подскажете когда у Вас появилась возможность постить изображения?

    не обращал внимания,по моему сразу

    теперь по теме

    Созданный класс не отображается в библиотеке классов на этапе создания шаблона

    При создании формы п.к.м. Add custom form ->в select a base class: выбрать all management packs и в строке поиска вбить созданный класс, сам с утра мучался по этой  теме,

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

    доредактировал xml, но при импорте ошибка

    "”" не является допустимым маркером. Ожидается маркер """ или "'". Строка 42, позиция 23.

    как раз там и начинается начало того что я правил

    без правленных действий в xml иная ошибка

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


    • Изменено _CoopeR_ 6 марта 2013 г. 12:11
    • Помечено в качестве ответа _CoopeR_ 6 марта 2013 г. 13:28
    • Снята пометка об ответе _CoopeR_ 6 марта 2013 г. 13:34
    6 марта 2013 г. 12:09
  • ошибка возможно потому что я не разобрался в конвертировании xml в mp и пытаюсь импортировать именно xml, хотя я не думаю что в этом есть разница
    6 марта 2013 г. 12:37
  • совсем сломал голову, не могу понять в чем ошибка, может кто глянет файл MP

    • Изменено _CoopeR_ 7 марта 2013 г. 7:46
    6 марта 2013 г. 13:32
  • совсем сломал голову, не могу понять в чем ошибка, может кто глянет файл MP
    Поменять все косые двойные кавычки (”) на прямые (")
    6 марта 2013 г. 13:50
  • мега ступил, признаю, но вот и дальше не катит

    Начальный тег "TypeProjections" в строке 41 не соответствует конечному тегу "TypeProjection". Строка 64, позиция 5.

    6 марта 2013 г. 13:55
  • <TypeProjection ID=”del_user” Accessibility=”Public” Type=”del_user” /> - имеет закрывающую косую, а ниже есть </TypeProjection>.

    Так быть не должно, </TypeProjection> нужно удалить.



    Update. Т.к. Component входят внутрь, то удалить нужно обратную косую в превой строке, а нижний закрывающий тег - оставить.
    6 марта 2013 г. 13:59
  • Там кривой код в примерах. Сам возился. Вот корректный код. Специально у себя сохранил.

    Блок 1

        <References>
          <Reference Alias="System">
            <ID>System.Library</ID>
            <Version>7.5.8501.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="Console">
            <ID>Microsoft.EnterpriseManagement.ServiceManager.UI.Console</ID>
            <Version>7.5.2905.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
          <Reference Alias="Alias_63e21c3b_c3e1_4b27_a22b_d8ee0e4806d7">
            <ID>System.WorkItem.ServiceRequest.Library</ID>
            <Version>7.5.2905.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>
    		<Reference Alias="WorkItem">
    			<ID>System.WorkItem.Library</ID>
    			<Version>7.5.1561.0</Version>
    			<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    		</Reference>
    		<Reference Alias="CoreKnowledge">
    			<ID>System.Knowledge.Library</ID>
    			<Version>7.5.1561.0</Version>
    			<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    		</Reference>
    		<Reference Alias="SupportingItem">
    			<ID>System.SupportingItem.Library</ID>
    			<Version>7.5.1561.0</Version>
    			<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    		</Reference>
    		<Reference Alias="Catalog">
    			<ID>System.ServiceCatalog.Library</ID>
    			<Version>7.5.1561.0</Version>
    			<PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    		</Reference>
        </References>

    Блок 2

          <ClassTypes>
            <ClassType ID="SR_TEST" Accessibility="Public" Abstract="false" Base="Alias_63e21c3b_c3e1_4b27_a22b_d8ee0e4806d7!System.WorkItem.ServiceRequest" Hosted="false" Singleton="false" Extension="false">
              <Property ID="Property_35" Type="string" AutoIncrement="false" Key="false" CaseSensitive="false" MaxLength="256" MinLength="0" Required="false" Scale="0" />
              <Property ID="TEST" Type="string" AutoIncrement="false" Key="false" CaseSensitive="false" MaxLength="256" MinLength="0" Required="false" Scale="0" />
            </ClassType>
          </ClassTypes>
    	<TypeProjections>
    		<TypeProjection ID="UserProvisioning_TP" Accessibility="Public" Type="SR_TEST">
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="AssignedTo" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemClosedByUser']$" Alias="ClosedBy" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemCreatedByUser']$" Alias="CreatedBy" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAffectedUser']$" Alias="AffectedUser" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToConfigItem']$" Alias="RelatedConfigItems" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem']$" Alias="AboutConfigItem" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem' TypeConstraint='System!System.Service']$" Alias="AffectedServices" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToWorkItem']$" Alias="RelatedWorkItems">
    			<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="RelatedWorkItemAssignedTo" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToWorkItem' SeedRole='Target']$" Alias="RelatedWorkItemSource">
    			<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="RelatedWorkItemAssignedTo" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasFileAttachment']$" Alias="FileAttachments">
    			<Component Path="$Target/Path[Relationship='SupportingItem!System.FileAttachmentAddedByUser']$" Alias="FileAttachmentAddedBy" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='CoreKnowledge!System.EntityLinksToKnowledgeDocument']$" Alias="RelatedKnowledgeArticles" />
    		<Component Path="$Target/Path[Relationship='Catalog!System.WorkItemRelatesToRequestOffering']$" Alias="RelatedRequestOffering" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasActionLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.ActionLog']$" Alias="ActionLog" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasCommentLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.AnalystCommentLog']$" Alias="AnalystCommentLog" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasCommentLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.UserCommentLog']$" Alias="EndUserCommentLog" />
    		</TypeProjection>
    	</TypeProjections>		
        </EntityTypes>
      </TypeDefinitions>
      <Categories>
        <Category ID="Depo.Category" Value="Console!Microsoft.EnterpriseManagement.ServiceManager.ManagementPack">
          <ManagementPackName>Depo</ManagementPackName>
          <ManagementPackVersion>1.0.0.0</ManagementPackVersion>
        </Category>
      </Categories>
      <Presentation>
        <Forms>
          <Form ID="FORM_TEST" Accessibility="Public" Target="UserProvisioning_TP" Assembly="Microsoft.EnterpriseManagement.ServiceManager.Applications.ServiceRequest.Forms" TypeName="Microsoft.EnterpriseManagement.ServiceManager.Applications.ServiceRequest.Forms.ServiceRequestForm">
            <Category>Form</Category>

    Куда вставлять, опередлитесь по крайним строчкам. обратите внимание на ВЫДЕЛЕННЫЕ значения. Они должны совпадать в коде аналогичным образом (названия будут соответствовать вашему классу, форме и TypeProjection ID.

    Для бандла всё закачиваем в одну папку, на машине где установлен SCSM. Используем утулиту Антона - http://gallery.technet.microsoft.com/MPB-Maker-743f85b9

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

    https://skydrive.live.com/redir?resid=DD4BD3AD28241F53!156

    Я не запечатывал пакет. Можете импортировать и попробовать создать шаблон. Также попробуйте загрузить в Авторинг и посмотреть что к чему. Надеюсь, помог.

    UPDATE: Немного скорректировал код для понимания - курсивом выделена часть кода, которая уже генерится при сохранении МП, т.е. её не надо копировать к себе. Необходимо только подгнать данные в соответствие с TypeProjection.
    • Предложено в качестве ответа Dismantled 6 марта 2013 г. 15:21
    • Изменено Dismantled 7 марта 2013 г. 6:38
    6 марта 2013 г. 14:54
  • Спасибо, ваша форма работает, однако поставлена задача использовать клоны существующих стандартных форм.

    и еще вопрос, из чего формируется название

    <TypeProjection ID="UserProvisioning_TP"
    Target="UserProvisioning_TP" 

    при помощи MPBmaker создаю пакет

    C:\mp>MPBMaker.exe del_user "c:\mp\del.xml"
    MPB Maker for System Center Service Manager 2010. Version 1.0.0.0
    Copyright (c) Anton Gritsenko aka FreemanRU. All right reserved.
            Start BuildBundel process...
            Output folder not specified
            Process management pack del.xml ...
            Process resource file Microsoft.EnterpriseManagement.ServiceManager.Applications.ServiceRequest.Forms.dll ...
            c:\mp\del_user.mpb
            Bundle successfully saved!

    но при импорте пакета получаю

    Ошибка импорта пакета управления.
    Ошибки (1):
    Не удалось разрешить идентификатор {0} в контексте пакета управления {1}. Неизвестный псевдоним {2}
    : Не удалось разрешить идентификатор Alias_df83956e_61d0_4886_ba9d_11cccc155e22!System.WorkItem в контексте пакета управления del. Неизвестный псевдоним Alias_df83956e_61d0_4886_ba9d_11cccc155e22


    • Изменено _CoopeR_ 7 марта 2013 г. 7:49
    7 марта 2013 г. 7:42
  • и еще вопрос, из чего формируется название
    <TypeProjection ID="UserProvisioning_TP"
    Target="UserProvisioning_TP"

    На сколько я понимаю, это просто уникальный идентификатор для ТП. В моём примере название осталось из чужого примера :). Меняйте на любой. Только всегда ID должен равняться Target.

    Не удалось разрешить идентификатор {0} в контексте пакета управления {1}. Неизвестный псевдоним {2}
    : Не удалось разрешить идентификатор Alias_df83956e_61d0_4886_ba9d_11cccc155e22!System.WorkItem в контексте пакета управления del. Неизвестный псевдоним Alias_df83956e_61d0_4886_ba9d_11cccc155e22

    Вы когда бандл делали, точно все файлы собрали в одном месте? Я например просто взял оригинальную папку Service Request (со всеми дллками), скопировал в неё свой МП (попробуйте запечатанный вариант и нет), скопировал в неё МПБмейкер и в ней же сделал бандл. Также проверьте корректность МП, ничего ли лишнего не попало при копи-пасте? Учли моё дополнение про курсив к предыдущему посту? Как вариант, выложите текущую версию МП сюда, попробую его потестить.
    7 марта 2013 г. 8:03
  • из нужных ему файлов как я понял нужен только

    Microsoft.EnterpriseManagement.ServiceManager.Applications.ServiceRequest.Forms.dll

    возможно ошибаюсь

    вроде все учел, вот xml моего пака


    • Изменено _CoopeR_ 7 марта 2013 г. 8:16
    7 марта 2013 г. 8:14
  • У вас сохранился Алиас из моего примера. А должен стоять из Вашего.

    <Reference Alias="Alias_63e21c3b_c3e1_4b27_a22b_d8ee0e4806d7">
           
    <ID>System.WorkItem.ServiceRequest.Library</ID>
           
    <Version>7.5.2905.0</Version>
           
    <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
    </Reference>

    Я правда поменял, но что-то это не помогло. Ваш МП у меня не открывался в АТ даже в оригинале, всё зависало.
    Вот моя рабочая сборка -
    https://skydrive.live.com/redir?resid=DD4BD3AD28241F53!157
    Но формочку придётся перерисовать и класс дополнить по нуждам. Используйте в качестве заготовки.

    • Предложено в качестве ответа Dismantled 7 марта 2013 г. 9:17
    7 марта 2013 г. 9:15
  • вот  оригинал xml без редактирования кода, только создание формы в АТ, в чем все же ошибка? неправильно понимаю что куда ставить?
    7 марта 2013 г. 9:35
  • предполагаю что ошибка в части

    	<TypeProjections>
    		<TypeProjection ID="UserProvisioning_TP" Accessibility="Public" Type="SR_TEST">
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="AssignedTo" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemClosedByUser']$" Alias="ClosedBy" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemCreatedByUser']$" Alias="CreatedBy" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAffectedUser']$" Alias="AffectedUser" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToConfigItem']$" Alias="RelatedConfigItems" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem']$" Alias="AboutConfigItem" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAboutConfigItem' TypeConstraint='System!System.Service']$" Alias="AffectedServices" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToWorkItem']$" Alias="RelatedWorkItems">
    			<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="RelatedWorkItemAssignedTo" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemRelatesToWorkItem' SeedRole='Target']$" Alias="RelatedWorkItemSource">
    			<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemAssignedToUser']$" Alias="RelatedWorkItemAssignedTo" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasFileAttachment']$" Alias="FileAttachments">
    			<Component Path="$Target/Path[Relationship='SupportingItem!System.FileAttachmentAddedByUser']$" Alias="FileAttachmentAddedBy" />
    		</Component>
    		<Component Path="$Target/Path[Relationship='CoreKnowledge!System.EntityLinksToKnowledgeDocument']$" Alias="RelatedKnowledgeArticles" />
    		<Component Path="$Target/Path[Relationship='Catalog!System.WorkItemRelatesToRequestOffering']$" Alias="RelatedRequestOffering" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasActionLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.ActionLog']$" Alias="ActionLog" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasCommentLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.AnalystCommentLog']$" Alias="AnalystCommentLog" />
    		<Component Path="$Target/Path[Relationship='WorkItem!System.WorkItemHasCommentLog' TypeConstraint='WorkItem!System.WorkItem.TroubleTicket.UserCommentLog']$" Alias="EndUserCommentLog" />
    		</TypeProjection>
    	</TypeProjections>

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

    осталось разобраться в правильности этой части кода

    7 марта 2013 г. 10:29
  • Какая-то беда с вашим пакетом. У меня не получилось его "оживить". Вероятно, что-то было сделано не так изначально. Например, откуда взялось это?

          <Reference Alias="Alias_13daa0df_4040_4e8b_bf35_27a047d9e5e8">
            <ID>Microsoft.EnterpriseManagement.ServiceManager.Authoring.Forms</ID>
            <Version>7.5.2905.0</Version>
            <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
          </Reference>

    Вот я сделал МП под Вашу задачу. Попробуйте разобраться и сделать всё с самого начала. Если не получится, сделаю детальную инструкцию.
    https://skydrive.live.com/redir?resid=DD4BD3AD28241F53!158
    • Помечено в качестве ответа _CoopeR_ 7 марта 2013 г. 12:19
    7 марта 2013 г. 10:35
  • Нет, в этой части всё в порядке. Проблема в References. Смотрите мой вариант вашего МП из последнего поста.
    7 марта 2013 г. 10:48
  • да спасибо, с вашим все работает, осталось выяснить как заполнять в эти поля не просто текст а результаты запроса
    7 марта 2013 г. 10:50
  • Не совсем понял что требуется? Передавать в форму данные из SSPortal (элементарно)? Или передавать в форму результаты другого запроса (как-то странно)? :)

    7 марта 2013 г. 10:55
  • я имею ввиду вот это


    если ставить Тип приглашения Текст  то тут все ясно как его сопоставить, а вот как быть с результатом запроса?
    • Изменено _CoopeR_ 7 марта 2013 г. 11:26
    7 марта 2013 г. 11:25
  • На сколько я понимаю, тут надо использовать User Picker. В форму его добавить можно, а вот как в него данные с портала вогнать, я пока сам не разобрался. Собственно теперь у нас схожие вопросы :) - я тут в соседнем посте жду ответа по аналогичному вопросу http://social.technet.microsoft.com/Forums/ru-RU/infrastructureru/thread/53cb56e1-6e81-4d55-9ab3-466fc97119da . Пока на выходе я имею только xml-строку. Идей, кроме разбора её при помощи скрипта, нет. Будем ждать ответа вместе.

    А с формами, надеюсь, удалось вам помочь :).

    7 марта 2013 г. 12:17
  • А с формами, надеюсь, удалось вам помочь :).

    Да. больше спасибо за помощь, ждем ответа по общей теме )))
    7 марта 2013 г. 12:19
  • В продолжение "общей темы". Коллега, мне кажется Вам это тоже поможет =):

    http://www.codeproject.com/Articles/61900/PowerShell-and-XML

    Мне помогло.

    • Предложено в качестве ответа Dismantled 12 марта 2013 г. 10:06
    12 марта 2013 г. 10:06
  • Если изначальная тема ещё актуальна, то я разобрался как это делается. Вот мой пост с наглядным примером:

    http://social.technet.microsoft.com/Forums/en-US/administration/thread/47d6af2c-fe99-4b18-b6d1-5283390ecf14

    • Предложено в качестве ответа Dismantled 13 марта 2013 г. 20:11
    • Помечено в качестве ответа _CoopeR_ 14 марта 2013 г. 5:06
    13 марта 2013 г. 20:11
  • Import-Module SMLets $ServiceRequestID = "SR802" $ServiceRequest = Get-SCSMObject -Class (Get-SCSMClass -Name System.WorkItem.ServiceRequest$) -Filter "ID -eq $ServiceRequestID" $GetRelatedConfigurationItem = (Get-SCSMRelationshipObject -BySource $ServiceRequest | ?{$_.RelationshipID -eq "d96c8b59-8554-6e77-0aa7-f51448868b43"}).TargetObject.DisplayName $GetServiceRequestTitle = $ServiceRequest.Title $ServiceRequest | Set-SCSMObject -Property Description -Value "$GetServiceRequestTitle $GetRelatedConfigurationItem"

    Где нужно разместить этот код, чтобы созданная пользователем на портале заявка оказалась в консоли с заполненным полем "Описания" ? И как менять идентификатор $ServiceRequestID = "SR802" , чтоб он автоматически подхватывал ИД нового ЗнО?

    5 сентября 2013 г. 5:23
  • Я делаю это в Оркестраторе. И Вам рекомендую.

    Примерно так:

    Где:

    1 - Инициализация данных (данные ранбука, которые в последствии будут получены из формы с портала, кроме элементов конфиграции\relationships). Там же будет получен GUID, по которому вы и получите в итоге свой "SRXXXX";

    2 - Собственно, по ГУИДу получаете нужный "SRXXXX"

    3 - тут скрипт Повершелла, при помощи которого вы получаете затрагиваемого пользователя, и остальные связанные элементы конфигурации.

    4- Тут из всех собранных данных и формируете Описание запроса.

    Ставьте Оркестратор, пробуйте, экспериментируйте :).


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 5 сентября 2013 г. 6:41
    5 сентября 2013 г. 6:41
  • Поставил Оркестратор. Настроил соединение в консоли. Настроил соединение в Оркестраторе с сервером SCSM2012.

    Задача: При помощи ранбука нужно сформировать поле "Описание", поместив туда следующие данные:

    1. Два поля из закладки "Расширение" - Действие и Назначено отделу

    2. Связанные элементы - Отдел, Пользователь, Компьютер, ПО (в ПО нужно взять значение по двум полям - Название и Версия)

    3. Дату создания запроса на обслуживание

    4. Рабочий телефон пользователя, который помещается в "Альтернативный способ связи"

    Примерно так:

    Дата создания заявки: 29.09.2013 / Назначено отделу: ОИТ / Действие: Установить

    Пользователь: Иванов Иван Иванович / ОГК / 67ogk01 / 52-12-43

    Программа: NX 8.3

    После этого поместить сформированное поле в поле "Описание" ЗнО и в поле "Описание" Ручного действия, находящегося внутри этого ЗнО.

    Возникли такие проблемы:

    1. Не нашел в Оркестраторе значка, в который размещается powershell скрипт. В предыдущем сообщении он помечен цифрой 3. Уточните пожалуйста его месторасположение.

    2. Удается извлечь и вернуть только ранбук состоящий из действий "Инициализировать данные" и "Соединение". Если добавляю команды из закладки SC2012 Service Manager, то при попытке вернуть ранбук появляется сообщение: "Произошла ошибка при сохранении действия в хранилище данных. Проверьте журналы трассировки службы Orchestrator Management Service"

    3. Далее возникли сомнения по поводу правильности указания данных в Оркестраторе:

    Правильно ли я тут указал GUID, чтобы в последующем Powershell скрипте использовать его для идентификации моего ЗнО?

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

    4. Как вытащить дату создания ЗнО и заполнить поля "Описание" в ЗнО и Ручном действии?


    28 сентября 2013 г. 2:08
  • В соседней ветке подобная тема обсуждалась и там же я опубликовал статью на эту тему. Почитайте, попробуйте сделать, как я описал и, думаю, большая часть вопросов отпадёт сама собой. Если останутся, спрашивайте. 

    PS:

    Вы не забыли сконфигурировать в Оркестраторе Пакет интеграции для SCSM? (Ваш вопрос №2)


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.




    • Изменено Dismantled 3 октября 2013 г. 19:37
    28 сентября 2013 г. 10:33
  • Ваша статья оказалась очень полезной. Множество вопросов отпало сразу, но из оставшихся самым актуальным остается непонятная ошибка при сохранении ранбука с активностью из набора SCSM. Как я уже говорил ранее, ранбук сохраняется с базовыми активностями, с активностями пакета расширения powershell, с активностями пакета расширения Sharepoint, но наотрез отказывается сохраняться с активностями SCSM с такой ошибкой:

    По поводу конфигурирования в Оркестраторе пакета интеграции для SCSM Вы имеете ввиду настройку в меню "Параметры"?  Я выполнил настройку для SCSM с удачным тестом соединения:

    30 сентября 2013 г. 7:36
  • Рад, что статья помогла. По поводу ошибки, раз уж пакет интеграции сконфигурирован корректно, давайте покурим логи. Что там в эвентах на момент возникновения ошибки?  И на стороне оркестратора и на СЦСМе.

    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    30 сентября 2013 г. 8:00
  • У меня сервер оркестратора стоит на той же машине, что и сервер SCSM.

    В логах, что на серверной машине, что на клиенте - никаких ошибок вообще.

    Отталкиваясь от содержимого сообщения об ошибке, стал искать журнал трассировки оркестратора. В нем следующая запись:
    2013-10-01 15:22:46 [1636] 1 DBDataStore: ::Error #-2147217873
    
    Description: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_OBJECTS_OBJECTTYPES". The conflict occurred in database "Orchestrator_58sd01", table "dbo.OBJECTTYPES", column 'UniqueID'.
    
    Source: Microsoft OLE DB Provider for SQL Server
    
    Error #-2147217873
    
    Description: The statement has been terminated.
    
    Source: Microsoft OLE DB Provider for SQL Server

    Пробовал средствами Data Configurate создать для оркестратора новую базу - тот же результат. Аутентификация в базе проходит под учеткой администратора базы, вряд ли тут проблема в правах на запись.

    1 октября 2013 г. 8:22
  • Есть подозрения, что это очередной баг.

    http://social.technet.microsoft.com/Forums/en-US/7dab8517-d760-4ea5-9d70-3fb78ffd806c/error-while-checking-in-runbook-with-query-configmgr-activity

    Я с таким не сталкивался.

    А при тесте ранбука эта ошибка появляется? На каком шаге?


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    1 октября 2013 г. 8:53
  • Предположительная причина проблемы в версии пакетов, которые я использовал. На мысль натолкнул последний скриншот из статьи по Вашей ссылке. Как я понял там идет речь о том, что проходит некорректная процедура регистрации пакета интеграции.

    Проблему удалось решить, скачав пакеты интеграции по ссылкам из Вашей статьи об организации заполнения "Описания" средствами Оркестратора. Статья вновь оказалась очень полезной.

    В процессе изучения статьи возник вопрос. Там видно, что Вы работаете с простым списком на портале, а у меня этот тип списков постоянно "залипает" (не дает выбрать указанный ранее пункт). Как я понял из форума - это баг SCSM. Есть ли способ решить его без обращения в службу поддержки?

    2 октября 2013 г. 10:14
  • В процессе изучения статьи возник вопрос. Там видно, что Вы работаете с простым списком на портале, а у меня этот тип списков постоянно "залипает" (не дает выбрать указанный ранее пункт). Как я понял из форума - это баг SCSM. Есть ли способ решить его без обращения в службу поддержки?

    На сколько я понял, со дня на день выйдет UR4 для SCSM 2012. Вроде как там пофиксить обещают этот баг.

    Пруф:

    http://blogs.technet.com/b/servicemanager/archive/2013/09/24/service-manager-sp1-ur4-fixes.aspx

    "SCSM 2012:SP1: Regression- Simple lists do not function correctly in SSP after upgrading to SP1"


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    2 октября 2013 г. 10:37
  • Статью по теме удалось опубликовать в Технет Вики.

    http://social.technet.microsoft.com/wiki/ru-ru/contents/articles/20049.scsm-orchestrator-powershell-authoring-tool.aspx


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 3 октября 2013 г. 19:38
    • Предложено в качестве ответа Dismantled 3 октября 2013 г. 19:38
    3 октября 2013 г. 19:38
  • $GetPrinterName =
    $GetValuesPrinter.Values.Value | %{$_.DisplayName}

    Как я понял, DisplayName в данном коде это внутреннее имя поля "Отображаемое имя" в классе Принтеры Active Directory. Если я использую свой расширенный класс, содержащий поле, внутреннее имя которого Property_5 (так отображается в ауторинг тулл), то мне, по идее, нужно использовать код:

    $GetPrinterName =
    $GetValuesPrinter.Values.Value | %{$_.Property_5}

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


    4 октября 2013 г. 12:08
  • Этот скрипт для разбора связанных элемнтов конфиграции из структуры UserInput.Values:

    Думаю, на ваш Property_5 просто нужно подписаться в Оркестраторе. Если вы используете расширенный класс, то с ним и надо работать в Оркестраторе. Т.е. например не просто "Запрос на обслуживание" , а "Мой запрос на обслуживание расширенный".


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 4 октября 2013 г. 12:31
    4 октября 2013 г. 12:30
  • Вы имеете ввиду в компоненте "Получить запрос" выбрать шаблон не базового запроса на обслуживание, а мой мой расширенный шаблон? Я так и делал.

    Я говорю о том, что на портале у меня есть результат запроса использующий мой самодельный класс элементов конфигурации, в котором есть 2 свойства (Property_4, Property_5). В Вашей статье Вы работали с классом "Принтеры Active Directory".

    И если я использую Ваш скрипт без изменений (с DisplayName), то получаю в результате значение поля "Отображаемое имя", в которое по умолчанию входят ключевые поля. А я хочу получить значение из моих полей Property_4 и Property_5.  Если я просто меняю имя свойства с DisplayName на Property_5 в Вашем скрипте, как в примере далее - результата нет, ничего на форму не выводится.

    $GetPrinterName =
    $GetValuesPrinter.Values.Value | %{$_.Property_5}

    5 октября 2013 г. 10:54
  • Покажите табличку userinput из вашего запроса, которая формируется после заведения запроса на портале. Или выложите пакет управления с вашим расширенным запросом.

    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    5 октября 2013 г. 11:33
  • Видимо мне придется выложить пакеты. Будет такой набор:

    1. oit.servicedesk.001   - пакет с классом, расширяющим стандартный клас запроса на обслуживание.

    2. oit.servicedesk.template.001 - пакет с шаблоном и предложением запроса на базе вышеописанного класса.

    3. oit.configurate.program - самодельный класс элементов конфигурации для хранения ПО. Тут и находятся свойства Property_4 и Property_5, хранящие соответственно название программы и отдел, который производит установку.

    Сообщите, каким образом можно Вам их передать. Возможно, переслать на ящик.

    Повторюсь, проблема заключается в том, что не получается вывести значение из Property_5 в какое-нибудь поле формы. Это необходимо для фильтрации заявок по этому полю, в очереди разных отделов.

    6 октября 2013 г. 8:41
  • Как у вас все сложно :). Выкладывайте на скайдрайв и ссылку в студию. Если хотите частным образом, то на почту cola at live dot ru Хотя я кажется уже понял, что сложность скорее всего в том, что у вас все по разным пакетам и классам раскидано. В своей статье я рассматривал вариант работы со штатными пакетами и классами, без заморочек так сказать. Выкладывайте, подумаем.

    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 6 октября 2013 г. 10:56
    6 октября 2013 г. 10:48
  • Выложил пакеты по ссылке: https://skydrive.live.com/redir?resid=C2B2ACE1156A2A6C!107

    Я выложил не запечатанные пакеты. У меня же используются в запечатанном виде oit.servicedesk.001 и oit.configurate.program, т.е. все пакеты содержащие классы.

    ----

    Действительно, организация хранения данных у меня не самая оптимальная. Дело в том, что до того как я открыл для себя Оркестратор, и из Вашей статьи узнал как собирать данные в Описание, я сделал свои наследованные от ЗнО классы с дополнительными полями для хранения данных, и шаблоны от них. Общее кол-во классов ~70, в некоторых нужны дополнительные поля для сортировки по очередям, а в некоторых ничего дополнительного не нужно. Возникнут ли в будущем проблемы (с отчетами и т.д.), если я буду использовать шаблоны не от оригинальных классов ЗнО, Ручного действия и Действия рецензирования, а каждый шаблон от индивидуального класса в запечатанном пакете, наследуемого от оригинальных классов ЗнО, Ручного действия, Действия рецензирования?

    6 октября 2013 г. 21:51
  • Вот ваши Property_4 и Property_5. На них и подписывайтесь.

    Никакой Павершелл для этого не нужен. PS используется только для вытаскивания связанных элементов конфигурации (то, что хранится в AD). У вас, как мне кажется, "Название" и "Отдел" - не имеют отношения к элементам конфигурации. Или я ошибаюсь :)? И всё же не забывайте, что это хранится в отдельном пакете управления от пакета, в котором хранится расширение вашего ЗНО.

    К сожалению, про отчёты не подскажу. Боюсь соврать. Для этого вопроса можете подянть отдельный топик.


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    7 октября 2013 г. 9:15
  • "Название" и "Отдел" это элементы конфигурации. В закладке "элементы конфигурации" есть элемент "Программы", созданный на основе моего самодельного класса. Он хранит перечень ПО предприятия, а именно название ПО и наименование отдела, выполняющего установку.

    В предложении запроса на портале этот элемент конфигурации используется для создания связанного элемента, проще говоря, портал предлагает юзеру выбрать какое ПО устанавливать. Т.е. как у вас использовался "Пользователи Актив директори", только с моим классом.

    Соответственно в ЗнО появляется связанный элемент, выбранное пользователем ПО. И в этом связанном элементе есть 2 поля Property_4 и Property_5. Нужно вытащить в отдельное поле значение этих полей, потому что по этим критериям заявка будет отфильтрована в соответствующие очереди.

    ---------------------------

    Я обнаружил такой нюанс. Если создавать ЗнО из Инцидента, имеющего связанные элементы, то по логике эти связанные элементы должны тут же прицепиться ранбуком ЗнО и записаться в Описание ЗнО. Но в данной ситуации такого не происходит. Возможно ли это исправить?

    7 октября 2013 г. 10:05
  • Табличку, которая формируется в теле ЗНО после ввода данных с портала, покажите из вашего запроса. Полную желательно и с данными. Имена личные можно замазать, только системные отметки оставьте.


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 7 октября 2013 г. 10:40
    7 октября 2013 г. 10:27
  • Сделал небольшие коллажи, посвященные актуальным проблемам.

    Первая проблема: вывод свойств Property_4 и Property_5 в поля класса, наследованного от ЗнО

    Вторая проблема: При создании ЗнО из под Инцидента, в ЗнО не переносятся связанные элементы из Инцидента, соответственно запускающийся в ЗнО ранбук не может корректно заполнить поле Описание. Да и вообще не понятен механизм - получается в таком случае пользователь должен вбивать вручную связанные элементы в ЗнО?

    Что думаете об этих ситуациях?

    8 октября 2013 г. 6:38
  • Думаю я об этих ситуациях примерно так: "АААааааа!" (хватаюсь за голову) :).

    Ну а если серьёзно. Как у вас программы вообще оказались в ЭК? Это следствие работы SCCM? Или вы их туда сами заносили? Что мешало просто создать список и не усложнять себе жизнь?

    Сутя по табличке userinputs из рисунка 3, название программы всё же попадает - "Teamcenter". Разве это не один из ваших Property? Оно должно обрабатываться скриптом из моей статьи. Получается не попадает "отдел", который Property_5? А он у вас случаем не в расширении класса "Ручных действий" хранится? Это я сужу по картинке 4. Быть может в этом проблема? Мой скрипт работает в пределах одного класса. А именно:

    $ServiceRequest = Get-SCSMObject -Class (Get-SCSMClass -Name System.WorkItem.ServiceRequest$) 

    Если это у вас класс ManualActivity, то думаю и "Отдел" АКА Property_5 следует искать в нём.

    Что касается второго вопроса, тут рекомендую открыть новую тему.


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.




    • Изменено Dismantled 8 октября 2013 г. 8:44
    8 октября 2013 г. 8:42
  • Постараюсь описать все последовательно.

    В моей табличке как раз значение DisplayName, и это результат работы Вашего скрипта. Дело в том, что, судя по всему, DisplayName, отвечающий за поля формы "Отображаемое имя" - это некая структура, записывающая в себя значения всех полей, являющихся ключевыми. Если Вы попробуете создать запись в элементах "Программное обеспечение" в элементах конфигурации, где полно ключевых полей, то увидите что в поле Отображаемое имя занеслась запись, примерно "Версия.Название.Код языка и т.д". Это была одна из причин создания собственного класса элементов конфигурации. Вытащить значения свойств, отличных от DisplayName я пока не вижу возможности. ---------------------------------------------------------------

    На картинке 4 изображено простое поле, ставшее результатом добавления в наследованный от ЗнО класс еще одного свойства, тут могло быть любое название. ----------------------------------------------------------------

    Что касается хранения ПО в списках, то: 1. Простой список не подходит, т.к. придется заливать вручную ~40 названий на каждый запрос на сайте + слетает возможность как то распределять работу по очередям Отделов, а это необходимо. (+ простые списки у меня остаются неработоспособными до сих пор из-за бага) 2. Список запроса не подходит, т.к. такой список хранится внутри класса, а все пакеты с классами должны запечатываться, отсюда следует, что мне сначала нужно сделать класс в ауторинг тул, потом импортировать его в консоль, потом заполнить список 40 названиями, потом экспортировать на жесткий, открыть снова в ауторинг тул, запечатать, импортировать в консоль снова. И так КАЖДЫЙ класс содержащий список ПО.


    8 октября 2013 г. 11:04
  • У Вас получалось при помощи Вашего скрипта вытащить в поле на форме значение свойства класса "Принтер ActiveDirectory",  отличного от DisplayName (просто любое другое свойство)?

    К сожалению, в данный момент времени, не имею возможности проверить это самостоятельно.



    8 октября 2013 г. 11:07
  • В моей табличке как раз значение DisplayName, и это результат работы Вашего скрипта.

    Нет, это не результат работы моего скрипта. Это значения связанных элементов конфигурации таким образом заносятся при их выборе через Портал. А мой скрипт разбирает по полочкам эту получившуюся XML-кашу (и только эту). Для примера берём:

    <UserInputs>
    <UserInput Question="ttt" Answer="&lt;Values Count=&quot;3&quot;&gt;&lt;Value DisplayName=&quot;Ivanov, Nikolay&quot; Id=&quot;1dcf3362-117f-88ef-6bc7-254a425241ad&quot; /&gt;&lt;Value DisplayName=&quot;Petrov, Anton&quot; Id=&quot;bdaadbc9-5e45-e1b4-1b67-847d7b7e0203&quot; /&gt;&lt;Value DisplayName=&quot;Sidorov, Georgiy&quot; Id=&quot;5871cb9b-7c99-e35e-cf1f-b9f3ef6e5855&quot; /&gt;&lt;/Values&gt;" Type="System.SupportingItem.PortalControl.InstancePicker" />
    </UserInputs>

    А на выходе имеем строку:
    Ivanov, Nikolay; Petrov, Anton; Sidorov, Georgiy

    и т. п.

    У Вас получалось при помощи Вашего скрипта вытащить в отдельное поле значение свойства, отличного от DisplayName, класса "Принтер ActiveDirectory" (просто любое другое свойство)?

    Import-Module SMlets
    $Printer = Get-SCSMObject -Class (Get-SCSMClass -Name Microsoft.AD.Printer$)
    $Printer.PrinterName -match 'Color'

    Этот простой скрипт выведет в результат все названия принтеров, которые содержатся у вас в базе ЭК, и в названии которых присутствует слово Color.

    Можете с таким же успехом вместо PrinterName вписать любое свойство из (только -match 'Color' уберите)

    UNCName
    ServerName
    ShortServerName            
    PrintNetworkAddress                  
    PrintShareName                           
    IsDeleted                               
    DriverVersion                         
    PrintMemory                      
    PrintOwner
    AssetNumber
    ManagedBy 
    PrintDuplexSupported                        
    PrintColor                                  
    PrintStaplingSupported                      
    VersionNumber                               
    Url                                         
    PrintMediaSupported

    и т. д. И посмотреть результат.

    Теперь сделайте следующее:

    Import-Module SMlets
    $Object = Get-SCSMObject -Class (Get-SCSMClass -Name YOUR.CUSTOMCLASS.NAME$)
    $Object[0] | FL

    и покажите результат. Вместо YOUR.CUSTOMCLASS.NAME, думаю понятно, что нужно указывать.

    Можете сделать так со всеми используемыми классами в вашем запросе, пока не найдёте ваши Property_4 и 5.


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.






    • Изменено Dismantled 8 октября 2013 г. 13:11
    8 октября 2013 г. 12:47
  • Вот ваши Property_4 и Property_5

    Import-Module SMLets
    $Class = Get-SCSMClass -Name oit.configurate.program_class1
    $Class.Properties[0].Name
    $Class.Properties[1].Name

    Напрямую пример с объектом показать не могу, т. к. у меня нет вашей базы данных. Но можете поэкспериментировать с конструкцией

    Import-Module SMLets
    $Object = Get-SCSMObject -Class (Get-SCSMClass -Name oit.configurate.program_class1) -Filter "ID -eq ???"
    $Object.Properties.Property_4
    $Object.Properties.Property_5

    Это только пример, как обращаться к свойствам объекта.


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.



    • Изменено Dismantled 8 октября 2013 г. 14:59
    8 октября 2013 г. 14:55
  • А дайте пожалуйста скрины вашего заполненного проблемного ЗНО (в котором фигурируют property_4 и 5).

    Вкладка "Общие" и "Связанные Элементы". И выделите на них property (или элементы содержащие свойство property).


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.


    • Изменено Dismantled 9 октября 2013 г. 7:24
    9 октября 2013 г. 7:23
  • Попробовал добавить Ваш скрипт в свой ранбук и вывести значение в поле "Альтернативный способ связи", но видимо я не правильно понял, как его использовать:

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

    Тем не менее, тут видны прочие значения связанные с моим классом "Программы КнААЗ" (oit.servicedesk.program_class1):

    Я вижу тут только значения свойства DisplayName.




    10 октября 2013 г. 4:30
  • В общем, теперь всё встало на свои места. Эти ваши "проперти", в вашем примере - это свойства RelationshipObject. Получать их надо так:

    Import-Module SMLets
    $Objects = @()
    $ServiceRequestID = "SR2651"
    $ServiceRequest = Get-SCSMObject -Class (Get-SCSMClass -Name System.WorkItem.ServiceRequest$) -Filter "ID -eq $ServiceRequestID"
    $RelatedObjects = (Get-SCSMRelationshipObject -BySource $ServiceRequest | ? {$_.RelationshipID -eq "d96c8b59-8554-6e77-0aa7-f51448868b43"})
    $RelatedObjects = $RelatedObjects | % {$_.TargetObject} | ? {$_.ClassName -eq 'oit.configurate.program_class1'}
    $RelatedObjectsNames = $RelatedObjects | % {$_.DisplayName}
    foreach ($RelatedObjectsName in $RelatedObjectsNames)
    {
        $Objects += Get-SCSMObject -Class (Get-SCSMClass -Name oit.configurate.program_class1) -Filter "Name -eq $RelatedObjectsName"
    }
    $ObjectsProperty = $Objects | % {$_.Property_4}
    $ObjectsProperty = $ObjectsProperty -join "; "
    Write-Host "Property_4:" $ObjectsProperty
    $ObjectsProperty = $Objects | % {$_.Property_5}
    $ObjectsProperty = $ObjectsProperty -join "; "
    Write-Host "Property_5:" $ObjectsProperty

    Этот скрипт я сделал на вашем примере запроса со скриншота. Можете испытать его в PowerShell ISE ничего не меняя. Должно сработать. Можете для эксперимента поменять в скрипте номер ЗНО. Скрипт универсальный. Даже если у вас в конфигурационных элементах будет несколько объектов из разных классов, он выберет только те, которые относятся к классу oit.configurate.program_class1. И выпишет их в строчечку, разделяя точкой с запятой.

    В Оркестраторе это будет выглядеть немного по-другому. Допустим, надо вывести Проперти_5 в описание. Выглядеть будет примерно так:

    RelationShips можно вытягивать и активностями Оркестратора из пакета интеграции SCSM. Но PS, на мой взгляд, универсальнее. Экспериментируйте, разбирайтесь.

    Желаю удачи :)

    PS: Скрипты, что я давал, лучше испытывать в PowerShell ISE


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.



    • Предложено в качестве ответа Dismantled 10 октября 2013 г. 12:59
    • Изменено Dismantled 10 октября 2013 г. 13:01
    10 октября 2013 г. 12:50
  • Все получилось. Огромное спасибо.

    Чтобы убрать поля "Расширенное" и юзать стандартный класс Инцидента, можно ли сделать так, чтобы поля Property_5 и Property_4 влияли на содержимое полей "Категория классификации" и "Группа поддержки":

    11 октября 2013 г. 7:08
  • Что значит "Влияли"? В зависимости от значений Проперти изменялись\устанавливались соответствующие значения Группы поддержки и Классификация? Если влияние такое, то не вижу сложностей. Думаю, даже скриптовать не придётся. в Оркестраторе можно настраивать свойства связей и фильтры (двойной клик по стрелочке, связывающей элементы.

    Если хотите развивать эту тему, пожалуйста, откройте новый вопрос (пост).


    Если сообщение оказалось полезным, пожалуйста, проголосуйте за него или пометьте в качестве ответа.

    11 октября 2013 г. 8:27
  • Да, я хочу чтобы результат скрипта изменял значение в поле шаблона.

    Я попробовал сделать условие на стрелках, но тут судя по всему, есть свои подводные камни. Открыл новый пост "Обработка условий в Оркестраторе".

    12 октября 2013 г. 8:23