Monitooritud Serveri eemaldamine SCOM’ist ja Specified cast is not Valid viga.

Oletame, et server mis on SCOM agendiga monitooringu all lõpetab oma eksitentsi ja ta lülitatakse välja või VM kustutatakse. Nüüd ( parem eelnevalt) tuleks SCOMis tegelikult teha ports tegevusi, mis sõltuvad kas jõudlus/event jms andmeid on tulevikus vaja või mitte.

Kõige lihtsam on Agent Delete, KUID siin tekivad järgmised probleemid:

* Server  või mõni tema objektidest võib olla osake Distributed Application’ist. Ehk – viisakas on üle käia ka seotud DA ja parandada disain.

* Palju suurem probleem ( mille kohta on ka MS Bugi ja mis pole ka veel 2012 R2 CU2’s ära parandatud) on siis kui eemaldad mõne SQL serveri ja Sul on kasutuses SQL Action accoundid ja need accoundid on levitatud AINULT valitud SQL serveritele (mille hulka kuulub siis kustutatud server).

Avaldub bugi sel hetkel,  kui soovid kontot muuta/vaadata. Specified Cast is not valid.

image

Edasi töötades näed, et levitusloend on tühi.

image

 

Olukorrast lahendamiseks hetkel head lahendust pole.

Tuleks:

1 – Nimetada SCOM konsoolis “vigane”  Run As Account ümber.

2- Luua uus SQL Action Account sama nimega nagu ennem oli  ja kasutada sama AD kasutajanime parooli.

3- Levitada see vajalikele SQL serveritele.

4- Asendada Run As Profiles  SQL’iga seotud profiilides (või kus see kasutuses oli) vana konto uuesti loodud kontoga.

5- Kustutada vana Run As Account konto.

 

Juhul, KUI SCOM’ist eemaldatud server on võimalik veel korraks tööle panna ja lasta ennast uuesti ära registreerida, siis on võimalik eemaldada ta viisakalt Run As Account’i levitamis listist.

TallPaulF on kirjutanud selliseks eeltööks mõnusa PS scripti:

param (
[parameter(mandatory=$true)]$TargetName,
[switch]$WhatIf
)
Import-Module -Name OperationsManager
Write-Host
$Accounts=0
Get-SCOMRunAsAccount |
%{
$Acct=$_
try {
$Dist = Get-SCOMRunAsDistribution -RunAsAccount $Acct
}
catch {
Write-Host -f yellow $('WARNING: RunAsAccount "{0}" has a corrupt RunAs Distribution!' -f $Acct.Name)
}
if ($Dist.Security -eq 'MoreSecure')
{
$FoundTarget = $false
$Dist.SecureDistribution = @($Dist.SecureDistribution | %{ if ($_.DisplayName -eq $TargetName) { $foundTarget = $true } else { $_ } } )
if ($foundTarget)
{
$Accounts++
$Dist | Set-SCOMRunAsDistribution -RunAsAccount $Acct -WhatIf:$WhatIf -Verbose
}
}
}
Write-Host
if ($Accounts -gt 0)
{
if ($WhatIf)
{
Write-Host -ForegroundColor green $("$TargetName would be removed from {0} RunAsAccount secure distribution lists" -f $Accounts)
} else {
Write-Host -ForegroundColor green $("$TargetName removed from {0} RunAsAccount secure distribution lists" -f $Accounts)
}
} else {
Write-Host -ForegroundColor cyan "$TargetName was not found in any RunAsAccount secure distribution lists"
}