0

我想创建 PowerShell 脚本来覆盖我的监视器和规则的某些参数。我使用了下面的代码,但我有一些错误。我想覆盖未启用的可覆盖参数或其他内容。我该怎么做?

$mps = Get-SCOMManagementPack | ? {$_.Name -like "test"}
$overrideMp = Get-SCOMManagementPack -DisplayName "Overrides"

$overridename = "testmonitor.Overrides" 

$monitor = 'testmonitor'
$override = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorPropertyOverride($overrideMp,$overridename)
$override.Monitor = $monitor

$override.Property = 'WarningThreshold'
$override.Value = 80
$override.DisplayName = "Overrides"

$overrideMp.Verify()
$overrideMp.AcceptChanges()

错误:

错误1:异常设置“属性”:“无法将值“WarningThreshold”转换为
键入“Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorProperty”。
错误:“无法将标识符名称 WarningThreshold 与有效的枚举器匹配
姓名。指定以下枚举器名称之一并重试:已启用,
TraceEnabled, 算法, AlgorithmPercentage, DefaultState, GenerateAlert,
AutoResolve、AlertPriority、AlertOnState、AlertSeverity、AlertMessage、
警报参数 1、警报参数 2、警报参数 3、警报参数 4、
警报参数 5、警报参数 6、警报参数 7、警报参数 8、
AlertParameter9、AlertParameter10、MemberInMaintenance、MemberUnavailable、
IgnoreMemberInMaintenance, IgnoreMemberUnavailable""
在行:1 字符:2
+ $override.Property = $参数名
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], SetValueInvocationException
    +fullyQualifiedErrorId : ExceptionWhenSetting
error2:使用“0”参数调用“AcceptChanges”的异常:“数据库错误。
MPInfra_p_ManagementPackInstall 失败并出现异常:无法验证项目:
测试规则1"
在行:193 字符:1
+ $MP.AcceptChanges()
+ ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ManagementPackException
4

3 回答 3

0

我明天在办公室尝试调试它。

顺便说一句,有一个名为 MPtuner 的第三方覆盖管理工具:http ://mpwiki.viacode.com/default.aspx?g=mptuner 它是免费的,所以你应该试试。

罗马。

于 2016-02-01T05:12:05.787 回答
0

这很令人困惑,但每种工作流类型都有两种不同类型的覆盖。对于监视器,有:

MonitorPropertyOverride
MonitorConfigurationOverride

您使用的是第一个,wgich 仅用于标准参数,例如 Enabled。对于任何自定义参数,请使用配置覆盖。

于 2016-08-28T08:44:56.137 回答
0

错误消息对我来说看起来很清楚。枚举WarningThreshold中没有属性。ManagementPackMonitorProperty我对 SCOM 没有太多经验,但您可能需要覆盖该属性具有 valueAlertOnState的监视器的属性。AlertSeverityWarning

尝试这样的事情:

$mps | Get-SCOMMonitor | Where-Object {
  # (other selection criteria) -and
  $_.AlertSettings.AlertSeverity -eq 'Warning'
} | ForEach-Object {
  $ctx = Get-SCOMClass -Id $_.Target.Id
  # ...
  $override = New-Object ...
  $override.Monitor = $_
  $override.Property = 'AlertOnState'
  $override.Value = 80
  $override.Context = $ctx
  # ...
}

此处采用的代码(可能与您找到它的地方相同)。不过,不确定这是否有效。就像我说的,我对 SCOM 的经验很少,而且我没有可用于测试的 SCOM 服务器。

于 2016-01-31T11:46:46.037 回答