Le blog technique

Toutes les astuces #tech des collaborateurs de PI Services.

#openblogPI

Retrouvez les articles à la une

Renommage des ressources d’une VM suite à un déploiement par SCVMM

 

Lorsque vous déployez une machine virtuelle par VMM, celle ci est préfixé au niveau du nom par SCVMM. La ressource Virtual Machine Configuration est également préfixée.

Voici un script qui va se charger de renommé les ressources comme ci celle ci avaient été déployé depuis Hyper-V /Failover Clusters et non VMM.

image

 

 

Code:

Param ([string]$VM, [string]$MonCluster)

if (($VM -eq $NULL) -or ($MonCluster -eq $NULL))
{
    write-host « Il manque un argument » -f yellow
}
else
{
    $VM=$VM.ToUpper()
    get-cluster $MonCluster
    if ($?)
    {
        get-cluster $MonCluster | Get-ClusterGroup -Name « SCVMM $VM Resources »
        if ($?)
        {
            (get-cluster $MonCluster | Get-ClusterGroup -Name « SCVMM $VM Resources »).name=$VM
            if ($?)
            {
                sleep -s 2
                ((get-cluster $MonCluster | Get-ClusterGroup -Name « $VM » | Get-ClusterResource) |?{$_.resourcetype -eq « Virtual Machine »}).name= »Virtual Machine $VM »
                ((get-cluster $MonCluster | Get-ClusterGroup -Name « $VM » | Get-ClusterResource) |?{$_.resourcetype -eq « Virtual Machine Configuration »}).name= »Virtual Machine Configuration $VM »
            }
            else
            {
                write-host « Renommage du Groupe de Ressource echouer » -f yellow
            }
        }
        else
        {
            write-host « Groupe de Ressources pas trouver » -f yellow
        }
    }
    else
    {
        write-host « Cluster pas trouver » -f yellow
    }
}

Configuration du DSC en mode Pull Server

 

Installation du module xPSDesiredStateConfiguration

Récupérer le module xPSDesiredStateConfiguration sur le site suivant :

https://gallery.technet.microsoft.com/xPSDesiredStateConfiguratio-417dc71d

Ce module contient la ressource suivante xDSCWebService qui va nous permettre de configurer notre Serveur DSC Pull.

Vous devez maintenant extraire le contenu de l’archive dans :

C:\Program Files\WindowsPowerShell\Modules

clip_image001

Installation de la Feature DSC

Ouvrer un Prompt PowerShell puis lancer la commande :

Add-WindowsFeature -Name DSC-Service -IncludeManagementTools

image

Redémarrer votre serveur

Ouvrer un prompt PowerShell et lancer la commande suivante :

Get-DSCResource

Vérifier que vous avez bien la ressource xDSCWebService qui s’affiche

(cette ressource est disponible suivante au module que vous avez copier précédemment).

image

Lancer un Prompt PowerShell

Configuration du Serveur DSC

Executer le Script Sample_XDscWebService.PS1 présent dans le répertoire c:\programfiles\WindowsPowerShell\Modules\xPSDesiredStateConfiguration\Examples

image

Lancer maintenant la commande Sample_xDscWebService -certificateThumbPrint AllowUnencryptedTraffic

image

Un répertoire du meme nom est créé contenant le fichier mof contenant la configuration du server Pull.

(Le répertoire est créé la ou votre prompt est situé)

image

Le fichier mof va être utilisé par une commande DSC pour la configuration du serveur.

Apercu du fichier mof

clip_image012

lancer la commande suivante :

Start-DscConfiguration -Wait -Path .\Sample_xDscWebService -Force -Verbose

Le serveur Pull est maintenant configuré

image

Vérification du serveur DSC

La commande Get-DSCConfiguration permet de voir la configuration du serveur DSC

image

Dans votre navigateur internet, taper l’adresse suivante :

http://NOMSERVER:8080/PSDSCPullServer.svc

On peut constater que le service IIS est fonctionnel.

clip_image018

SCOM 2012 – Lister toutes les alertes provenant des serveurs d’un groupe

Selon le mode de fonctionnement de votre service informatique, il est possible que vous n’ayez pas une équipe de supervision dédiée mais plutôt que cette tâche incombe à chaque équipe pour son périmètre de serveurs donné.

Si en plus vous utilisez un Resolution State différent pour attribuer les alertes à chaque équipe, l’idée peut vite vous venir de scripter cette tâche !

A priori, rien de bien compliqué.

Commençons par récupérer le groupe :

$group = Get-SCOMGroup –Displayname “Nom du groupe”

Puis les instances présentes dans ce groupe. Cette fois-ci, pas de cmdlet natif, il faut utiliser la méthode GetRelatedMonitoringObjects du groupe :

$groupinstances = $group.GetRelatedMonitoringObjects(‘Recursive’)

Et enfin les alertes non attribuées (Resolution State 0) provenant de ces instances :

$alerts = Get-SCOMAlert -instance $groupinstances -ResolutionState 0

Hélas, si le groupe visé est un minimum conséquent, on obtient l’erreur suivante :

The incoming tabular data stream (TDS) remote procedure call (RPC) protocol stream is incorrect. Too many parameters were provided in this RPC request. The maximum is 2100.

Cette erreur provient directement de SQL et n’est pas propre à SCOM (cf. https://blogs.msdn.microsoft.com/emeadaxsupport/2009/09/01/how-to-fix-sql-error-too-many-parameters-were-provided-in-this-rpc-request/ )

De plus, le cmdlet Get-SCOMAlert est très lent à exécuter et il n’est donc pas envisageable de l’utiliser dans un script qui aurait vocation à s’exécuter régulièrement.

Heureusement, une autre méthode de $group existe :

$alerts = $group.GetMonitoringAlerts([Microsoft.EnterpriseManagement.Common.TraversalDepth]::Recursive)

De cette façon, on n’a même plus besoin de récupérer les instances du groupe, on prend les alertes directement… et cette méthode est particulièrement véloce !

Attention toutefois, elle récupère toutes les alertes, y compris les alertes déjà attribuées ou déjà fermées. Il est donc nécessaire de les filtrer dans la dernière étape, celle de l’affectation de l’alerte à la bonne équipe à l’aide d’un ResolutionState :

$alerts | where resolutionstate -eq 0 | Set-SCOMAlert -ResolutionState xxx

On résume ? La solution n’était pas si évidente, mais au final 3 lignes suffisent :

$group = Get-SCOMGroup –Displayname “Nom du groupe”

$alerts = $group.GetMonitoringAlerts([Microsoft.EnterpriseManagement.Common.TraversalDepth]::Recursive)

$alerts | where resolutionstate -eq 0 | Set-SCOMAlert -ResolutionState xxx

A vous maintenant de les intégrer à vos scripts en fonction de vos besoins !