【发布时间】:2018-06-13 18:17:06
【问题描述】:
在这一点上,我非常渴望帮助。由于某些配置问题(我不会对此进行详细介绍...我与它无关,我只是在处理这些问题之后必须使用 SCOM ...)我迫切需要在 SCOM 中编写脚本覆盖,而且我碰壁了。
简而言之:我需要在磁盘(或单个对象实例)上设置覆盖。
在最终弄清楚我需要在其中指定对象实例引用的 ContextInstance 参数之后,我认为事情会变得更容易......但现在我不断收到错误:
使用“0”参数调用“AcceptChanges”的异常:“对象引用未>设置为对象的实例。”
在 ContextInstance 中指定 GUID 时不应该设置对象引用吗?我已经粘贴了下面的代码,因此您可以更好地了解我在做什么/尝试做什么。我为看起来不好的代码道歉,但我很着急,我只是在测试。
任何关于如何使这项工作发挥作用的意见都非常(非常高度!)感谢!
break
$mps = Get-SCOMManagementPack | Out-GridView -PassThru
$overrideMp = Get-SCOMManagementPack | Out-GridView -PassThru
$monitor = $mps|Get-SCOMMonitor | Out-GridView -PassThru -Title "Get Monitor
from $($mps.DisplayName)"
$overridableParameters = $monitor.GetOverrideableParameters()
$overridePropertyName = 'IntervalSeconds'
$overridePropertyValue = "500"
$class = Get-SCOMClass -Id $monitor.Target.Id
$disk = Get-SCOMClassInstance -Id "083e63d0-5937-6da7-e052-0dac0e712be4" |
Select *
$diskInstance = New-Object
Microsoft.EnterpriseManagement.Configuration.ManagementPack
if($monitor.$overridePropertyName -ne $overridePropertyValue) {
$overridname = $Monitor.name+".Override"
$override = New-Object Microsoft.EnterpriseManagement.Configuration.ManagementPackMonitorConfigurationOverride($overrideMp,$overridname)
$override.Monitor = $Monitor
$override.Parameter = $overridePropertyName
$override.Value = $overridePropertyValue
$override.Context = Get-SCOMClass $disk.MonitoringClassIds
$override.ContextInstance = $disk.Id
$override.DisplayName = $overridname
$override.Description = "Test OVR"
} Else {
Write-Output "Override contains same value as current Monitor"
}
Try {
$overrideMP.AcceptChanges()
} Catch {
"Catch"
Write-Output $_.Exception.Message
}
【问题讨论】:
标签: powershell scom system-center