PI Services

Le blog des collaborateurs de PI Services

PowerShell - Générer un rapport au format HTML (2/2)

Contexte

Cet article a pour objectif de fournir les principales commandes PowerShell afin de créer un rapport, qui, exécuté avec une tâche planifiée, permet de générer automatiquement un rapport HTML envoyé par mail.

Dans cette série de deux articles, nous verrons comment créer deux scripts PowerShell qui permettent de remonter les principales informations pour :

  • Une liste d’un ou plusieurs serveurs HYPER-V,
  • Les machines virtuelles présentes sur un ou plusieurs serveurs HYPER-V.

Compatibilité :

Les scripts présentés dans cette série ont étés testés sur :

  • HYPER-V pour Windows Server 2012R2
  • HYPER-V pour Windows Server 2012

Dans l’article précédent nous avons vu comment utiliser PowerShell pour générer un fichier HTML. Cet article présenteras les principales commandes PowerShell pour la génération d’un rapport affichant les principales informations des VMs ainsi que des Hyperviseurs.

Créer la liste des serveurs

Afin de préciser le noms des hyperviseurs qui seront interrogés, sans entrer leur noms en dur dans le script – ce qui obligerais à modifier lors de l’ajout ou la modification de serveurs cible – nous passerons par un fichier texte qui seras utilisé par le script. Chaque ligne du fichier contient le nom d’un serveur :

image

 

 

 

 

 

Afin de charger le contenu du fichier texte, il suffit d’en spécifier l’emplacement dans une variable :

image

 

Pour utiliser le fichier dans une boucle, il faut utiliser la commande “Get-Content” :

image

Récupérer les informations des VMs

La fonction “retrieve_virtualmachine_informations” permet pour une VM ($vmname_) et un hyperviseur ($server_) donné de récupérer les informations suivantes :

  • Nom de la VM,
  • Nom de l’hyperviseur,
  • Nombre de vcpu,
  • Informations de la RAM,
  • Nombre d’interfaces réseau,
  • Nombre de disques,
  • Temps d’activité de la VM,
  • Etat de la VM,
  • Délai de démarrage de la VM.

Voici la fonction :

image

Récupérer les informations des hyperviseurs

 

Informations générales :

Récupérer le temps d’activité de la machine :

image

Récupérer les informations de la commande “Systeminfo” et convertir au format CSV avec la fonction “Get-SystemInfo” :

image

Cette fonction seras ensuite utilisée pour récupérer le nom de la machine et son modèle :

image

RAM :

La fonction “Get-SystemInfo” est également utilisée pour récupérer les informations de mémoire disponible et maximum :

image

Disques :

Cette commande permet de récupérer tous les disques :

image

Une fois tous les disques récupérés, il faut pour chaque disque récupérer ses informations :

imagev

Créer les bornes d’avertissement

Afin de disposer d’un rendu visuel permettant de rapidement identifier un problème sur un serveur, il est possible (à l’aide de balises HTML) de colorier des cellules en fonction de la valeur contenue. Cela permet par exemple de rapidement identifier un serveur avec un faible stockage restant ou bien peu de RAM :

image

Tout d’abords, il faut créer les variables contenant la valeur des bornes :

image

Ensuite, lors de la génération du code HTML, il faut sous PowerShell, avec le switch “if” vérifier les trois différents cas (OK, Warninig et Critique), puis à l’aide de la balise HTML “bgcolor” préciser la couleur de la cellule :

image

Création et affectation d’un Switch convergé depuis SCVMM 2012

Nous allons ici créer un Switch Logique au travers de VMM et l’affecter à notre hôte Hyper-V.

L’affectation du Switch via VMM  va créer dans notre exemple le Teaming des cartes ainsi que les différentes VNICs avec la QOS associé.

Dans VMM, Créer un nouveau Port Profile

image

Donner un nom à ce nouveau Profil et sélectionner la configuration de Teaming que vous désirez créer pour vos hôtes Hyper-V en sélectionnant Uplink port profile et en sélectionnant le mode de Teaming souhaité et son algorithme de Load Balancing.

image

Sélectionner les différents Network Site que vous souhaiter intégrer a votre Port Profile et cocher Enable Windows Network Virtualization.

image

Le résumé de vos actions apparait.

Cliquer sur Finish

image

 

Nous allons maintenant créer un Logical Switch.

image

 

Cliquer sur Next

image

 

Donner le nom du Switch virtuel et cliquer sur Next.

image

 

Cliquer sur Next

 

image

 

Sélectionner Team et cliquer sur Add

image

Sélectionner le Port Profile précédemment créé et cliquer sur Ok.

image

Cliquer sur Next

image

Dans l’onglet Virtual Port, cliquer sur Add

image

Sélectionner les virtuals ports comme sur l’exemple ci dessous via le bouton Add.

(Ces virtuals ports sont nativement présent dans VMM et détiennent des Bandwidth Weight qui définiront notre QOS)

image

 

image

image

 

Cliquer sur Next

image

 

Cliquer sur Finish

image

 

Nous allons maintenant affecter à notre hyperviseur le Switch Logique précédemment créé.

Sélectionner votre Hôte et afficher ses propriétés.

image

 

Aller dans l’onglet Virtual Switches

image

Sélectionner New Logical Switch

image

 

Ici sélectionner les différentes interfaces réseaux devant participer à la configuration de votre Switch.

image

 

Nous allons maintenant ajouter 3 VNICs pour notre exemple qui permettront d’avoir des VNICs nécessaire pour notre cluster Hyper-V :

  • VNIC Cluster
  • VNIC Live Migration
  • VNIC Management

Cliquer sur New Virtual Network Adapter de manière à ajouter des VNICs

image

Procéder à la configuration de votre VNIC

image

Procéder de même pour les autres VNICs et cliquer sur OK.

image

 

Un message apparait. Cliquer sur OK

image

 

Votre Hyperviseur applique la configuration de votre Switch Convergé poussé depuis VMM.

Nos 3 VNICs sont maintenant apparue sur notre Hyperviseur.

image

 

Ces 3 VNICs détiennent également les configurations réseaux qui ont été appliqués.

image

Récupération des binaires d’installation de Windows Azure Pack installation Express en Local

 

Tout d’abord récupérer l’exécutable Microsoft Web Platform Installer disponible ici :

https://go.microsoft.com/?linkid=9737537

Procéder ensuite à son installation.

Une fois installé, ouvrez une fenêtre PowerShell.

Taper : cd 'C:\Program Files\Microsoft\Web Platform Installer'

Taper ensuite :

.\WebpiCmd.exe /offline  /Products:"WAP_SingleMachineInstallation" 
/Path:"C:\WAP_Offline"
/XML:
https://www.microsoft.com/web/webpi/5.0/webproductlist.xml
/Log:"C:\WAP_Offline.log

(si vous souhaiter récupérer les binaires de WAP dans une version antérieure, le XML référencé doit être modifié. Par exemple pour récupérer la version 4.6, le commutateur /XML aura pour valeur : https://www.microsoft.com/web/webpi/4.6/webproductlist.xml )

 

La récupération des binaires s’exécutent

image

Et se finit.

image

Notre répertoire de destination contient désormais l’ensemble des binaires nécessaire pour l’installation de WAP en offline.

image

Windows serveur 2012 et 2012 R2 : Trouver le bon journal d’évènement…

wevtutil permet de manipuler simplement le contenu des journaux d’évènements.

La ligne de commande “Wevtutil el” permet d’afficher tous les journaux disponible.

Lorsqu’on recherche un journal en particulier on peut y ajouter une recherche de caractère.

Dans l’exemple ci-dessous, on recherche les logs en rapport avec WinRm.

Wevtutil el | findstr /i /c :winrm

image

SCCM 2012 R2 : Modification de la collation d’une instance

L’installation de SCCM 2012 ou de SCCM 2012 R2 s’arrête si le mode de collation de l’instance SQL n’est pas “SQL_Latin1_General_CP1_CI_AS”.

image

Si l’instance ne porte pas déjà d’autres bases en production, il est possible de lancer une réinstallation partielle en ligne de commande :

Setup.exe /QUIET /ACTION=REBUILDDATABASE  /INSTANCENAME=<Nom de L’instance>  /SQLSYSADMINACCOUNTS <Liste d’administrateurs > /SQLCOLLATION=SQL_Latin1_General_CP1

image

Attention : Si vous aviez des bases déjà présentes dans cette instance ( là je pense à WSUS qui est un prérequis pour le rôle SUP ), il faut les rattacher à l’instance.

image

System Center Configuration Manager 2012 R2 : un outil pour contrôler tous les prérequis et/ou les installer.

La mise en œuvre complète des prérequis de configuration et d’installation pour configuration manager a toujours été délicate et longue. Avec SCCM 2012, cela ne s’est pas arrangé…

ConfigMgr 2012 R2 Prerequisites Installation Tool 1.3.0”  est donc le bienvenu pour aider sur une installation en maquette,  un petit site ou pourquoi pas en guise d’outil de contrôle, puisqu’il affiche les prérequis manquants.

Il est applicable à Windows Server 2012 et Windows Server 2012R2 et pour SCCM 2012 (comme son nom l’indique)…

Mieux vaut le lancer via une consoles powershell en mode administrateur.

Les Onglet “Central Administration Site”, “Primary Site” et “Secondary Site” permettent d’installer les prérequis pour l’installation des composants de base pour ces types de sites.

[Mais bon… lorsqu’on met en place un CAS c’est pour faire face à une grosse infrastructure et dans ce cas est ce vraiment une bonne idée de passer par un outil qu’on ne contrôle pas… ]

image

Ci-dessous le type de retour pour un site primaire. On constate que lorsque les composants sont déjà disponibles, le label “Verified installed” s’affiche.

On remarque le bouton “Download prerequisites files” qui permet de récupérer en avance de phase les fameux fichiers de prérequis demandé pendant l’installation de SCCM ( depuis SCCM 2012 ).

image

Les prérequis pour l’installation au choix des rôles MP, DP, Catalogue d’application ou Point d’enrollement ( pour les MACs ) peuvent être sélectionnés  dans l’onglet “Site System Roles”.

image

Et dans l’onglet Other, on peut carrément installer WSUS ( pour le SUP ) et ADK (avec les composants requis pour l’OSD uniquement).

On peut aussi lancer les prérequis AD. Pour l’extension du schémas, un accès au media SCCM2012 R2 est demandé pour exécuter Extadsch.exe.

image

Et voilà.
Il manque encore la configuration de SQL mais là c’est trop demandé vu le nombre de configurations possibles.

Hyper-V sur Windows Server 2012 R2 : Echec de la réplication initiale tous les 500Go

Lors de la mise en œuvre d’une réplication entre deux serveurs standalone en mode non compressé, la réplication se met en échec après 500Go de données copiés.

Les eventID 33680,32086 et 32022 sont générés dans le journal Microsoft\Windows\Hyper-V-VMMS\Admin

image

C’est un bug. L’équipe produit Microsoft étant désormais informée du problème, un hotfix devrait être produit.

En attendant on peut relancer la réplication jusqu’à ce que la réplication initiale aboutisse, par tranche de 500Go.

Il est possible de le faire manuellement via la console Hyper-V, pour des petits volumes et sur un petit nombre  de réplicas.

image

Dans le cas contraire il faut mettre en place une tache planifiée qui relance la réplication initiale chaque fois que l’un des EventID indiqué plus haut se produit.

Le corps du script  a exécuter est le suivant :

#Récupération de la liste des VMs en échec

$VmSEnEchec = Get-VMReplication | ?{$_.state –eq “Error”} |?{$_.Health –eq “Critical”}

#Relance des réplications

ForEach($VmEnEchec in $VmSEnEchec ) {Resume-VMReplication –VMName $VmEnEchec.Name}

Powershell : Comprendre l’execution policy RemoteSigned.

Avec l’arrivée de Powershell, Microsoft avait imaginé un moyen de signaler aux administrateurs les fichiers ps1 provenant de l’extérieur.

Les scripts powershell peuvent être “zonés” par certaines applications complices ( = exécutant Attachment Execution Service ) qui sont amenées à gérer des flux réseau. Internet Explorer était de celles là …

Il y a 6 types de zone :

NoZone = -1,
MyComputer = 0,
Intranet = 1,
Trusted = 2,
Internet = 3,
Untrusted = 4

Si votre script est passé par l’une d’entre elle et qu’il s’est vu attribué un 3 ou plus, pas de chance, il faut le dézoner ou changer  l’execution policy de votre poste, utilisateur ou process.

L’édition et la modification de l’en tête zone.identifier peut se faire via Notepad.
1 – Lancer une fenêtre de commande en tant qu’administrateur.

2- Entrer la commande : notepad “NomDuscriptPowershell.ps1:Zone.Identifier”

3 – Modifier la valeur de ZoneID (=2) puis quitter notepad en sauvegardant.

.Net Framework : Comment déterminer quelles versions version .NET Framework sont installées.

Pour rappel les versions de .Net Framework jusqu’à la version 4.0, peuvent cohabiter sur un même system du moment qu’elles ne partagent pas les mêmes CLRs.

En plus, des versions, il y a aussi les mises à jours ( simple ou services pack ), les packs de langues et le type de versions depuis la version 4.0 ( Client et Full ).

Chaque installation vient enregistrer une arborescence de clef et de valeurs sous la clef de registre  “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP

image

Microsoft tient à jour un tableau de clarification sur le site msdn : http://msdn.microsoft.com/en-us/library/bb822049.aspx

Windows 7/2008R2: Mettre à disposition les lecteurs réseaux de l’utilisateur en haut niveau de privilège.

Sur Windows 7 et Windows Serveur 2008 R2, l’activation de l’UAC ne permet pas à un utilisateur de visualiser les lecteurs réseaux de sa session lorsqu’il exécute un programme en haut niveau de privilège.

On peut désactiver cette protection en créant la valeur du registre suivante :

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

EnableLinkedConnections=1