这是一篇由 Microsoft 技术解决方案专家 Bob Roudebush 撰写的客座博文。非常感谢 Bob 撰写这篇博文并在社区中分享!
先决条件:
本演练是使用 System Center 演示虚拟机环境构建的。本文假定 AD 正常运行,Service Manager(带 SSP)和 Orchestrator 均已安装并正常运行,而且为 AD 和 Orchestrator 配置了适当的连接器。任何人都应该能够在自己的环境中通过更改一些属性值来完成本文中演示的操作。
摘要步骤:
1.在 Orchestrator 中创建 [Add User to Group](将用户添加到组)Runbook
2.在 Service Manager 中创建 [Add User to Group](将用户添加到组)Runbook 模板
3.在 Service Manager 中创建 [Add User to Group](将用户添加到组)请求模板
4.在 Service Manager 中创建 [Add Yourself to a Group](将自己添加到组)请求产品
5.将该请求产品添加到服务产品 Service Manager
6.测试请求产品
创建 [Add User to Group](将用户添加到组)服务请求的步骤:
创建 [Add User to Group](将用户添加到组)Runbook Orchestrator
首先您需要完成的任务的是创建 Runbook,它实际上会在 Active Directory 中自动执行将用户添加到适当的组这一过程。这个过程相当简单,但确实需要一些相关知识,如 [Get Relationship](获取关系)活动在 Orchestrator 中的工作原理,以及仅对于受影响用户和他们希望添加到的组,如何获取成功运行工作流所需的所有对象。
Travis Wright 写了一篇有关此方面的优秀博文,位置在 http://blogs.technet.com/b/servicemanager/archive/2012/05/22/working-with-relationships-in-the-scsm-orchestrator-integration-pack.aspx,我将其作为本演练的基础。
1.从 Orchestrator Runbook Designer,创建一个名为 [Add User to Group](将用户添加到组)的新 Runbook。
2.在后续步骤中,我们将逐活动构建此 Runbook。对于参考内容,下面提供了最终结果的样式:
3.首先,将 [Initialize Data](初始化数据)活动从 [Runbook Control](Runbook 控件)IP 拖放到 Runbook。
4.在此活动的属性中,添加一个名为“ActivityGUID”数据类型为“String”的参数。此参数将用于从 Service Manager 传入 Runbook 活动工作项的 GUID。当该 Runbook 启动时,现在它将知道哪个 Runbook 活动工作项触发了它的上下文,从这里可以找出哪个组与之关联。
5.接下来,将 [Get Relationship](获取关系)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。将其重命名为 [Get Group Relationship](获取组关系)。将前面的活动 [Initialize Data](初始化数据)连接到该活动。
6.在 [Get Group Relationship](获取组关系)活动的属性中,按如图所示配置以下详细信息:配置到 Service Manager 的连接,指定对象类、对象 GUID 和关联的类字段。对象 GUID 通过订阅 [Initialize Data](初始化数据)活动发布的数据从 Orchestrator 数据总线获取。这样我们将在 CMDB 中获得关联组对象的 GUID。单击 [Finish](完成)。
7.将 [Get Object](获取对象)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。重命名活动 [Get Group Object](获取组对象)。将前面的活动 [Get Group Relationship](获取组关系)连接到该活动。
8.在 [Get Group Object](获取组对象)活动的属性中,按如图所示配置以下详细信息:配置到 SC 2012 SM 的连接,指定对象类,然后创建一个筛选器,从 [Get Group Relationship](获取组关系)中拉入关联对象 GUID 的 SC 对象 GUID。要筛选的值通过订阅 [Get Group Relationship](获取组关系)活动发布的数据从 Orchestrator 数据总线获取。这将在 CMDB 中使用组对象的 GUID 从 CMDB 中获取该对象及其所有属性。单击 [OK](确定)创建该筛选器。单击 [Finish](完成)保存该活动。
9.将 [Get Relationship](获取关系)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。重命名活动 [Get Parent SR Relationship](获取父 SR 关系)。将前面的活动 [Get Group Object](获取组对象)连接到该活动。
10.在 [Get Parent SR Relationship](获取父 SR 关系)活动的属性中,按如图所示配置以下详细信息:配置到 SC 2012 SM 的连接,指定对象类、对象 GUID 和关联的类。对象 GUID 的值通过订阅 [Initialize Data](初始化数据)活动发布的数据从 Orchestrator 数据库获取。这样,我们可以发现触发 Runbook 的服务请求工作项的 GUID,因为我们以后将使用此方式发现受影响的用户。单击 [Finish](完成)。
11.将 [Get Object](获取对象)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。重命名活动 [Get SR Object](获取 SR 对象)。将前面的活动 [Get Parent SR Relationship](获取父 SR 关系)连接到该活动。
12.在 [Get SR Object](获取 SR 对象)活动的属性中,按如图所示配置以下详细信息:配置到 SC 2012 SM 的连接,指定对象类,然后创建一个筛选器,从 [Get Parent SR Relationship](获取父 SR 关系)中拉入关联对象 GUID 的 SC 对象 GUID。要筛选的值通过订阅 [Get Parent SR Relationship](获取父 SR 关系)活动发布的数据从 Orchestrator 数据总线获取。这将使用 CMDB 中的服务请求工作项的 GUID 从 CMDB 中获取该工作项及其所有属性。单击 [OK](确定)创建该筛选器。单击 [Finish](完成)保存该活动。
13.将 [Get Relationship](获取关系)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。重命名活动 [Get User Relationship](获取用户关系)。将前面的活动 [Get SR Object](获取 SR 对象)连接到该活动。
14.在 [Get User Relationship](获取用户关系)活动的属性中,按如图所示配置以下详细信息:配置到 SC 2012 SM 的连接,指定对象类、对象 GUID 和关联的类。对象 GUID 的值通过订阅 [Get SR Object](获取 SR 对象)活动发布的数据从 Orchestrator 数据库获取。我们通过此方式发现与我们前面检索的服务请求工作项关联的所有 AD 用户对象的 GUID。注意,这非常类似于 [Get Group Relationship](获取组关系)活动,只不过关联的类是“Active Directory User”,而不是“Active Directory Group”。单击 [Finish](完成)。
15.将 [Get Object](获取对象)活动从“SC 2012 Service Manager”IP 拖放到该 Runbook。重命名活动 [Get User Object](获取用户对象)。将前面的活动 [Get User Relationship](获取用户关系)连接到该活动。
16.在 [Get User Object](获取用户对象)活动的属性中,按如图所示配置以下详细信息:配置到 SC 2012 SM 的连接,指定对象类,然后创建一个筛选器,从 [Get User Relationship](获取用户关系)中拉入关联对象 GUID 的 SC 对象 GUID。要筛选的值通过订阅 [Get User Relationship](获取用户关系)活动发布的数据从 Orchestrator 数据总线获取。此活动使用我们在 [Get User Relationship](获取用户关系)活动中发现的 GUID 从 CMDB 拉入与此服务请求关联的所有用户对象。其中有我们需要的受影响的用户。下一步中将详细介绍此内容。单击 [OK](确定)创建该筛选器。单击 [Finish](完成)保存该活动。
17.单击 Runbook 设计器中 [Get User Relationship](获取用户关系)和 [Get User Object](获取用户对象)之间的链接,并选择 [Properties](属性)。在链接属性对象框的左侧选择 [Exclude](排除),并单击 [Add](添加)添加一个具有以下属性的排除筛选器:其中 [Get User Relationship](获取用户关系)中的 [relationship class](关系类)不等于 [Affected User](受影响的用户)。由于服务请求可能有与之关联的多个用户(分配到、受影响、创建人等),这将丢弃数据总线上除受影响用户的信息之外的所有数据,受影响用户的信息就是我们以后将该用户添加到组所需的信息。单击 [Finish](完成)。
18.将 [Get Group](获取组)活动从“Active Directory”IP 拖放到该 Runbook。重命名活动 [Get AD Group](获取 AD 组)。将前面的活动 [Get User Object](获取用户对象)连接到该活动。
19.在 [Get AD Group](获取 AD 组)活动的属性中,按如图所示配置以下详细信息:配置到 AD 的连接。
20.在 [Get AD Group Properties](获取 AD 组属性)对话框左侧选择 [Filters](筛选器)。使用下图中的设置添加一个筛选器,其中 [Sam Account Name](Sam 帐户名称)等于 [Get Group Object](获取组对象)中的用户名。该值通过订阅 [Get Group Object](获取组对象)活动发布的数据从 Orchestrator 数据总线获取。这将从 AD 中获取组对象的属性,但这些组对象仅限于筛选出服务请求表时用户选择的组。我们已经在前面的 [Get Group Relationship](获取组关系)和 [Get Group Object](获取组对象)活动中获取了此属性。单击 [OK](确定)创建该筛选器。单击 [Finish](完成)将更改保存到 AD 组活动。
21.将 [Get User](获取用户)活动从“Active Directory”IP 拖放到该 Runbook。重命名活动 [Get User](获取用户)。将前面的活动 [Get AD Group](获取 AD 组)连接到该活动。
22.在 [Get AD Group](获取 AD 组)活动的属性中,指定到 AD 的连接。
23.在 [Get User Properties](获取用户属性)对话框左侧选择 [Filters](筛选器)。使用下图中的设置添加一个筛选器,其中 [Sam Account Name](Sam 帐户名称)等于 [Get User Object](获取用户对象)中的用户名。该值通过订阅 [Get User Object](获取用户对象)活动发布的数据从 Orchestrator 数据总线获取。这将从 AD 中获取用户对象的属性,但这些用户对象仅限于 AD 中受影响用户的帐户名。我们已经在前面的 [Get User Relationship](获取用户关系)和 [Get User Object](获取用户对象)活动中获取了此属性。单击 [OK](确定)创建该筛选器。单击 [Finish](完成)将更改保存到 AD 组活动。
24.将 [Add User to Group](将用户添加到组)活动从“Active Directory”IP 拖放到该 Runbook。重命名活动 [Add User to Group](将用户添加到组)。将前面的活动 [Get User](获取用户)连接到该活动。
25.在 [Add User to Group](将用户添加到组)对象的属性中,为该用户和组指定可分辨名称。这些值通过订阅 [Get AD Group](获取 AD 组)和 [Get User](获取用户)活动发布的数据从 Orchestrator 数据总线获取。单击 [Finish](完成)。
26.保存 Runbook 并将其签入 Orchestrator。
在 Service Manager 中创建 [Add User to Group](将用户添加到组)Runbook 模板
此步骤假定在 Service Manager 中配置了 Orchestrator 连接器,并且正在将 Orchestrator 2012 中的 Runbook 与 Service Manager 2012 CMDB 正确同步。您可能需要手动强制同步和/或等待一段时间让您创建的 Runbook 对象出现在 Service Manager 中。连接器和手动同步的设置从 Service Manager 控制台的 [Administration](管理)窗格使用 [Connectors](连接器)视图配置。您可以通过在 Service Manager 2012 控制台中的 [Library](库)-> Runbooks 中验证 Runbook 是否正在同步。
1.从 Service Manager 控制台的 [Library](库)窗格中,选择“Runbooks”视图,并选择 [Add User to Group](将用户添加到组)Runbook。如果使用不同的名称保存了创建的 Runbook,则选择该名称。在 [Tasks](任务)窗格中单击 [Create Runbook Automation Activity Template](创建 Runbook 自动化活动模板)。
2.为该模板提供一个名称并选择一个保存该模板的管理包。确保选中了 [When I click OK, open the template form](当我单击“确定”时打开模板表单)选项。单击 [OK](确定)。
3.在模板表单的 [General](常规)视图中,填充希望在创建新 Runbook 活动时作为默认值的任何字段。重要说明:确保选中 [Is Ready for Automation](是否准备自动化),否则 Runbook 以后将不会作为服务请求的一部分自动执行!
4.在模板表单的 Runbook 视图中,确保正确映射了 ActivityGUID 参数。为此,单击 [Edit Mapping](编辑映射)按钮,然后选择 [Runbook Automation Activity](Runbook 自动化活动)和字段 [Object -> ID](对象 -> ID),如下所示。单击 [Close](关闭)。单击 [OK](确定)。
在 Service Manager 中创建 [Add User to Group](将用户添加到组)请求模板
此步骤假定您已经如前所述在 Service Manager 中创建了 Runbook 活动模板。
1.在 Service Manager 控制台的 [Library](库)窗格中,选择 [Templates](模板)视图。从任务窗格中,选择 [Create Template](创建模板)。为该模板 [Add User to Group Request Template](将用户添加到组请求模板)指定一个名称,指定一个类 [Service Request](服务请求)和一个要将该模板保存到的管理包。确保选中了 [When I click OK, open the template form](当我单击“确定”时打开模板表单)选项。单击 [OK](确定)。
5.在模板表单的 [General](常规)视图中,填充希望在创建新服务请求时作为默认值的任何字段。对于本演练,确保标题为 [Add User to Group](将用户添加到组)。所有其他字段都是可选字段。
2.在模板表单的 [Activities](活动)视图上,您可以选择添加一个或多个审批活动,以确保在 runbook 启动更改之前审批了请求。还需要添加在上一步中创建的 Runbook 活动模板,并将该 Runbook 链接到该请求。单击“+”号图标并选择刚才创建的 Runbook 活动。在工作流程完成之后,单击 [OK](确定)保存请求模板。
在 Service Manager 中创建 [Add Yourself to a Group](将自己添加到组)请求产品
此步骤假定您已经如前所述在 Service Manager 中创建了请求模板。
1.在 Service Manager 控制台的 [Library](库)窗格中,选择 [Service Catalog](服务目录)-> [Request Offerings](请求产品)-> [All Request Offerings](所有请求产品)视图。从任务窗格中,选择 [Create Request Offering](创建请求产品)。
2.在请求产品向导的 [Welcome](欢迎)屏幕上,单击 [Next](下一步)。
3.在请求产品向导的 [General](常规)屏幕上,提供请求产品的名称 [Add Yourself to a Group](将自己添加到组),并提供一个图标和描述。对于 [Template Name](模板名称),单击 [Select Template](选择模板)图标,并选择以前创建的请求模板。单击 [Next](下一步)。
4.为表单提供说明,该表单将在自助门户上显示给用户。
5.根据需要配置任意数量的提示或信息文本以完成请求,或者在审批工作流中提供足够的信息。对于本演练,唯一的必要提示是用户希望加入到的组。
6.要添加提示以收集用户希望加入到的组,请首先单击 [User Prompts](用户提示)屏幕上的“+”号图标。接下来,为该 [User Prompt](用户提示)提供一个名称 – 例如 [Group Name](组名称)。将响应类型设置为 [Required](必要),将提示类型设置为 [Query Results](查询结果)。这样,用户将会看到从 Active Directory 拉入的一个组列表,而不用手动键入组名称。单击 [Next](下一步)。
7.在 [Configure Prompts](配置提示)屏幕上,选择 [Group Name](组名称)提示,并单击 [Configure](配置)图标。
8.确保查询结果向导的 [Select Class](选择类)屏幕上搜索框旁边的下拉框设置为 [All basic classes](所有基本类)。使用搜索筛选器缩小结果,或者通过浏览类列表选择类“Active Directory Group”。单击 [Configure Criteria](配置标准)选项卡。
9.(可选)要限制从 Active Directory 返回并显示给用户的组列表,请在您希望筛选的属性旁放置选中标记,并提供添加约束的标准。单击 [Display Columns](显示列)选项卡。
10.在为最终用户列出的每个组显示的属性旁边放置选中标记。至少应选择 [Display Name](显示名称),以便在查询结果提示中显示组名称。单击 [Options](选项)选项卡。
11.选择选项 [Add user-selected objects to template object as related items](将用户选择的对象作为关联项添加到模板对象),并确保将下面的下拉框设置为 [Add User to Group – (Service Request)](将用户添加到组 – (服务请求))。选择选项 [Add user-selected objects to template object as affected configuration items](将用户选择的对象作为受影响的配置项添加到模板对象),并确保将下面的下拉框设置为 [Add User to Group – (Runbook Automation Activity)](将用户添加到组 – (Runbook 自动化活动))。重要说明:如果未设置后一选项,则用户选择的组将不会作为配置项添加到 Runbook 活动,并且您创建的 Runbook 将无法发现用户希望使用其 [Get Relationship](获取关系)活动添加到组。
12.单击 [OK](确定)。单击 [Next](下一步)。
13.在 [Map Prompts](映射提示)屏幕上,将前面创建的每个提示映射到服务请求、审阅活动或 Runbook 自动化活动中的字段。在本例中,创建了 3 个提示(组名称、业务理由和电话号码)。将业务理由和电话号码这样的字段映射到审阅活动中的字段,可让审阅者更方便地看到有关请求和受影响的用户的信息。单击 [Next](下一步)。
14.添加与此产品相关的任何知识文章。单击 [Next](下一步)。
15.将状态设置为 [Published](已发布)。配置该请求产品所需的任何其他属性,如产品所有者和内部注释。单击 [Next](下一步)。
16.在 [Summary](摘要)屏幕上,查看信息并单击 [Create](创建)。
17.单击 [Close](关闭)。
将该请求产品添加到服务产品 Service Manager
此步骤假定您已经如前所述在 Service Manager 中创建了请求产品,并且以前还在 Service Manager 中创建了服务请求。
1.在 Service Manager 控制台的 [Library](库)窗格中,选择 [Service Catalog](服务目录)-> [Request Offerings](请求产品)-> [All Request Offerings](所有请求产品)视图。选择您刚才创建的请求产品,并在任务窗格中选择 [Add to Service Offering](添加到服务产品)。
2.Service Manager 中的服务产品是逻辑组织请求产品的一种方法。如果尚未创建,则需要先创建。在本例中,从列表中选择 [Security & Access](安全和访问)服务产品,并单击 [Add](添加)。如果愿意,可以将一个请求产品添加到多个服务产品。
3.单击 [OK](确定)。
测试请求产品
访问 Service Manager 自助门户,并选择您刚才创建的请求产品。完成表单并提交。从 Service Manager 控制台中,您应看到创建了一个新服务请求工作项,并且从该工作项,应能够查看相关活动的状态,方法是突出显示该工作项,并在任务窗格中选择 [Edit](编辑)。