
La política de la empresa requiere que cada Servidor tenga un administrador asignado. Esta información se guarda en el campo "Administrado por" en el Objeto de computadora.
Sería bastante útil crear un grupo dinámico en SCOM que se complete a través de este campo AD. Y ahí radica mi problema.
Pasos que he intentado hasta ahora.
1.Cree un atributo "Administrado por" para el destino Computadora con Windows. Este atributo proviene de la consulta WMI SELECT * FROM DS_computer
con la propiedad DS_managedBy
.
2.Crea un grupo con un filtro dinámico.(Object is Windows-Computer_Extended AND (Managed by Equals usr) AND True)
Ahora bien, esto parece razonable en teoría, pero aparentemente no funciona en absoluto.
¿Es realmente posible lo que estoy intentando crear? ¿Cómo estoy abordando este problema?
Respuesta1
Después de investigar un poco, descubrí que alguien ya había abordado este problema. Algo así como. Yo modifiquéesteguion. Me deshice de las últimas líneas y agregué la lógica que necesitaba a continuación. Es complicado pero funciona de maravilla. Todo lo que necesita cambiar es el servidor de administración y la expresión regular de inclusión (tenemos varios dominios pero solo queremos este tipo de automatización para uno).
<Functions from original script go here>
$ManagementServer = "<ManagementServerGoesHere>"
$ManagementGroup = GetSCOMManagementGroup -ms $ManagementServer
$Groups = Get-SCOMGroup -DisplayName "Managed-By *"
$Groups |% {
$Group = $_
$Group.DisplayName -match "Managed-By (\w{3})" | Out-Null
$sAMAccountName = $Matches[1]
$User = Get-ADUser -Filter {sAMAccountName -eq $sAMAccountName}
$UserDN = $User.DistinguishedName
$ADManagedByComputers = Get-ADComputer -Filter {ManagedBy -eq $UserDN}
$SCOMManagedByComputer = Get-SCOMGroup $Group.id | Get-SCOMClassInstance
[string]$InstancesToAdd = ""
[string]$InstancesToRemove = ""
$ADManagedByComputers | % {
if($SCOMManagedByComputer.DisplayName -notcontains $_.DNSHostName) {
$Agent = Get-SCOMAgent -DNSHostName $_.DNSHostName
if($Agent) {
Write-Host ($_.DNSHostName + " not in SCOM Group " + $Group.DisplayName) -ForegroundColor Yellow
$InstancesToAdd = $InstancesToAdd + "," + $Agent.Id
} else {
Write-Host ($_.DNSHostName + " has no Agent installed!") -ForegroundColor Gray
}
} else {
Write-Host ($_.DNSHostname + " already in SCOM Group " + $Group.DisplayName) -ForegroundColor Green
}
}
$SCOMManagedByComputer | % {
if($_.DisplayName -match "<InclusionRegex>") {
if($ADManagedByComputers.DNSHostName -notcontains $_.DisplayName) {
Write-Host ($_.DisplayName + " should not be in SCOM Group " + $Group.DisplayName) -ForegroundColor DarkYellow
$Agent = Get-SCOMAgent -DNSHostName $_.DisplayName
if($Agent) {
$InstancesToRemove = $InstancesToRemove + "," + $Agent.Id
}
}
} else {
Write-Host ($_.DisplayName + " is not in the domain scope. Skipping.") -ForegroundColor Cyan
}
}
$InstancesToAdd = $InstancesToAdd.Trim(",")
$InstancesToRemove = $InstancesToRemove.Trim(",")
$ManagementPackName = ($Group | Get-SCOMClass).ManagementPackName
$ManagementPackID = (Get-SCManagementPack -Name $ManagementPackName)
$MP = ValidateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName
If($InstancesToAdd -ne "" -and $InstancesToRemove -ne "") {
$MP = UpdateGroup -mg $ManagementGroup -mp $ManagementPackID -groupID $Group.FullName -instancesToAdd $InstancesToAdd -instancesToRemove $InstancesToRemove
}
if($InstancesToAdd -ne "" -and $InstancesToRemove -eq "") {
$MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToAdd $InstancesToAdd
}
if($InstancesToAdd -eq "" -and $InstancesToRemove -ne "") {
$MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToRemove $InstancesToRemove
}
}