脚本监视器和规则
适用对象:System Center 2012 R2 Operations Manager, System Center 2012 - Operations Manager, System Center 2012 SP1 - Operations Manager
当无法通过其他标准方法(例如事件或性能计数器)收集所需的数据时,将使用监视脚本。 该脚本在代理上从信息收集数据并通过使用 MOM 来创建一个属性包。使用安装的 ScriptAPI 对象 Operations Manager 代理。
可以在任何脚本语言中可以访问 MOM 中编写监视脚本。安装在所有的 ScriptAPI 对象 Operations Manager 代理。 可以使用操作控制台来创建以 VBScript 或 JScript 脚本。 若要使用 Windows PowerShell 脚本中,您必须使用另一个创作工具 (如 System Center Operations Manager 2007 R2 创作控制台 或 MP 创作。
属性包
监视脚本发送任何输出数据如属性包,以便可以在表达式中评估的监视器或映射到的性能数据或事件的收集规则。 属性包是一组的每个具有名称的值。 尽管最好使用描述性的特定值的名称可以分配任何名称。 工作流的生命周期内仅存在一个属性包。 工作流运行时,下一次该脚本运行并使用新的值创建新的属性包。
一个属性包有任何数值,但的整个数据集不能超过 4 MB。 大多数脚本将只需要与得下此限制的总大小的某些值。 没有任何要求所有要由工作流使用的值。
脚本通过对 MOM 使用 CreatePropertyBag 方法创建属性包。ScriptAPI 对象。 工作流使用从属性包使用以下语法的 $Data 变量的值:
$Data/Property[@Name="PropertyName"]
例如,创建性能数据的脚本可能会创建下表中的值的属性包。 此表显示由该脚本并将用于将属性包数据映射到的性能数据的相应 $Data 变量的值的名称。
属性包值名称 |
示例值 |
变量 |
---|---|---|
ObjectName |
MyObject |
$Data/Property[@Name='ObjectName']$ |
取代 |
MyCounter |
$Data/Property[@Name='CounterName']$ |
实例名称 |
MyInstance |
$Data/Property[@Name='InstanceName']$ |
值 |
10 |
$Data/Property[@Name='Value']$ |
脚本结构
下面的代码演示了监视脚本来说明监视脚本的基本结构的示例。 此示例脚本具有以下特征。
接受参数为正运行该脚本的计算机的名称和应用程序的位置的路径。
创建具有名为 ComputerName、 InstanceName 和 PerfValue 的值的属性包。
sComputerName = WScript.Arguments(0)
sApplicationPath = WScript.Arguments(1)
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
oBag.AddValue "ComputerName", sComputerName
oBag.AddValue "InstanceName", "MyInstance"
oBag.AddValue "Value", 1.0
oAPI.Return(oBag)
此处讨论的脚本的每个部分的详细信息。
sComputerName = WScript.Arguments(0)
sApplicationPath = WScript.Arguments(1)
该脚本的前两行接受参数。 这些值都应处于的规则或监视器运行脚本的实参参数。 该脚本可以使用任意数量的所需的脚本的逻辑的参数。
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
接下来的两行创建一个属性包。 这些行也将大多数监视脚本保持不变。 该脚本的其余部分的主要用途是将通过使用从代理计算机中收集的数据将值添加到属性包。
oBag.AddValue "ComputerName", sComputerName
oBag.AddValue "InstanceName", "MyInstance"
oBag.AddValue "Value", 1.0
创建属性包后,则可以向其添加任意数量的值。 使用 AddValue 执行此操作使用的项名称的属性包对象上的方法后其值。 此示例使用显式值。 在实际的监视脚本中额外的代码,可能需要,将从要包含在这些值中的代理计算机收集信息。
oAPI.Return(oBag)
所有值都添加到属性包之后,它将返回到工作流。 这行是必需的并没有它脚本结束时丢弃属性包。 该脚本会创建一个属性包时仅使用此方法。 有关返回多个属性包和条件时使用此类策略的脚本的详细信息,请参阅 分解 部分 System Center Operations Manager 2007 R2 创作指南。
脚本参数
大多数脚本使用时将发送到该脚本从命令行运行该脚本的值的参数。 使用参数允许单个脚本可用于多个方案而无需修改该脚本本身。
在监视脚本中,参数是关键的这是因为可能存在此脚本需要使用将在每个代理上不同运行脚本的信息。 监视器或规则的目标对象的任何属性可以用于脚本参数的值。 此值在运行该脚本时,单独在每个代理上被解析。
在操作控制台中从访问参数 参数 按钮。 应该用在脚本中访问的顺序中的空格分隔各个参数。 这是相同的情况下运行脚本的命令行上将提供的命令行。
每个参数可以是属性的一个显式值或 $Target 变量在目标对象上使用值。 脚本运行,以便在命令行上解析的值提供的脚本时解决任何 $Target 变量。 如果您知道的正确语法,您可以键入 $Target 变量中。 它是更容易但若要选择从属性 目标 按钮,这将列出所有目标对象和其父项的属性。
重要事项 |
---|
可能解析为包括空格的值的任何 $Target 变量都应该用引号括起来。 如果值包含空格并且没有引号引起来,然后它就会看到由该脚本为两个单独的参数。 引号引起来将确保值被视为单个参数。 如果您选择从属性 目标 菜单上,它将为您不包括引号引起来。 您需要键入它们后选择属性。 |
例如,示例脚本之前需要用于计算机名称和应用程序路径的两个参数。 假定这监视器或规则以承载的某个类为目标的一部分 Windows 计算机 类中,计算机无法从 PrincipalName 属性检索名称。 如果应用程序路径上的目标类的属性,则参数看起来可能类似于下面的示例。 请注意 ApplicationPath 属性中,周围的引号,因为这可能解析为包含空格的值。
$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$ "$Target/Property[Type="MyApp.MyClass"]/ApplicationPath$"
假定您将此脚本的名称 MyScript.vbs, ,计算机名称为 MyServer01, ,和应用程序的路径是 C:\Program Files\Contoso\My Application, ,对于此脚本会将运行的命令行:
MyScript.vbs MyServer01 "C:\Program Files\Contoso\My Application"
脚本监视器和规则主题
-
创建一个规则来使用脚本来收集性能或事件数据。
-
创建监视器,则计算结果一个脚本来设置其运行状况状态的结果。
-
创建监视器,则计算结果执行的 UNIX/Linux 命令、 脚本或单行序列 (使用管道运算符) 的多个命令的输出。