PI Services

Le blog des collaborateurs de PI Services

Exchange 2010 – Page OWA vide après le passage d’un RU

Contexte

Après le passage d’un Rollup Update, lorsque vous vous connectez à l’OWA la page ne se charge pas et reste vide.

Dans le journal d’évènement l’erreur suivante est présente :

Outlook Web App couldn’t initialize.
A base theme couldn’t be found. The base theme must be in a folder with name = “base”

AA1

Solution

Pour résoudre cette erreur, il faut lancer le script UpdateCas.ps1 qui se trouve dans le dossier Scripts présent dans le répertoire d’Exchange Server.

A1

Exchange 2010 – Erreur “Flow of control cannot leave a Finally block”

Contexte

Lors d’un passage d’un Rollup Update ou d’un Service Pack (voir lors de l’utilisation d’un script PowerShell fourni par Microsoft), l’assistant d’installation d’Exchange 2010 échoue et l’erreur suivante est présente dans les logs :

Flow of control cannot leave a Finally block.

1

Solution

L’erreur provient d’une incompatibilité entre votre version de PowerShell et le script.

Pour résoudre l’erreur il faut regarder dans le fichier de log quel script et quelle ligne pose problème.

Ici c’est le script ManageScheduledTask.ps1 ligne 462 qui contient la commande return $success qui est en erreur.

2

Pour la résoudre il faut remplacer le return $success par Write-Output $success.

3

Une fois le script modifié, relancer l’assistant d’installation.

SCOM - Configurer Visual Studio 2017 pour les VSAE

Petite astuce très rapide, mais qui vous épargnera peut être une séance d’arrachage de cheveux :

Microsoft a communiqué il y a quelques mois sur la mise à jour des Visual Studio Authoring Extension (qui permettent de développer des management packs dans visual studio) pour offrir la compatibilité avec Visual Studio 2017, ce qui était très attendu.

Malheureusement, aucune documentation (à ma connaissance) n’indique une subtilité : si vous vous contentez d’installer Visual Studio 2017 (édition communauté ou autre) puis la dernière version des VSAE et que vous essayez de créer un nouveau projet « Management Pack », vous allez obtenir l’erreur suivante :

 

Impossible de charger le fichier ou l’assembly ‘Microsoft.VisualStudio.Modeling.Sdk.15.0 Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ ou une de ses dépendances. Le fichier spécifié est introuvable.

C’est parce qu’il vous manque un composant de VS 2017, dont la nécessité n’était certes indiqué nulle part…

Lancez donc une nouvelle fois le Visual Studio Installer, onglet Composants Individuels, et ajoutez le composant « Modeling SDK » disponible à la rubrique « SDK, bibliothèque et frameworks » :

 

Vous devriez maintenant pouvoir accéder aux projets Management Pack !

 

SCOM - Passer la console web en HTTPS

La console SCOM web est très souvent initialement déployée en HTTP simple :  l’utilisation du HTTPS pour les sites web accédés uniquement en local commence tout juste à se démocratiser, le certificat SSL n’a pas forcément été prévu au moment de déployer l’infrastructure SCOM…

Les demandes pour migrer la console en HTTPS commencent cependant à se multiplier, notamment à l’occasion d’un upgrade in-place des infrastructures SCOM 2012 vers 2016 (le cas de SCOM 1801 est un peu différent, la console web ayant totalement été refaite).

On pourrait imaginer qu’il suffit de passer le Default Web Site en HTTPS dans IIS, mais il n’en est rien. Si on se contente de ce paramétrage, la connexion à la console échoue avec le message suivant :

 

System.ServiceModel.CommunicationException: [HttpWebRequest_WebException_RemoteServer]
Arguments: NotFound
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.30214.0&File=System.Windows.dll&Key=HttpWebRequest_WebException_RemoteServer ---> System.Net.WebException: [HttpWebRequest_WebException_RemoteServer]
Arguments: NotFound
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.30214.0&File=System.Windows.dll&Key=HttpWebRequest_WebException_RemoteServer ---> System.Net.WebException: [HttpWebRequest_WebException_RemoteServer]
Arguments: NotFound

 

Il faut en réalité aussi modifier la configuration de SCOM à deux niveaux :

 

  • Dans le fichier x:\Dossier D’installation\Operations Manager\WebConsole\WebHost\Web.config, dans partie <services>, il faut modifier bindingConfiguration="DefaultHttpBinding" en bindingConfiguration="DefaultHttpsBinding"
  • Dans la clé HKLM\Software\Microsoft\System Center Operations Manager\12\Setup\WebConsole\  de la base de registre, il faut paramétrer :
    • HTTP_GET_ENABLED=false
    • BINDING_CONFIGURATION=DefaultHttpsBinding

 

Ne reste plus qu’à redémarrer iis (iisreset.exe) et le tour est joué!

 

SCOM - Réinitialiser complètement la console

Si vous développez des management packs, il vous est probablement déjà arrivé un bug assez agaçant : les colonnes affichées dans les vues (état, alertes…) ne reflètent pas ce que vous avez défini dans votre code.

L’ordre des colonnes n’est pas respecté, certaines colonnes sont visibles alors qu’elles ne devrait pas l’être et réciproquement…

Et en plus le résultat n’est pas le même d’un utilisateur à l’autre !

Vous connaissez probablement déjà le mode /clearcache de la console, mais cela ne change rien au problème.

Il s’agit en réalité d’une conservation des paramètres de personnalisation des vues dans la base de registre, qui n’est pas affectée par l’utilisation de /clearcache.

Pour réinitialiser complètement la console, une seule solution : fermez la console, lancez regedit et supprimez la clé  HKCU\Software\Microsoft\Microsoft Operations Manager\3.0\Console.

Relancez alors la console (tant qu’à faire en mode /clearcache, pour être sûr) et normalement tout sera rentré dans l’ordre… du moins pour votre profil et sur le poste où vous avez effectué le nettoyage.

Si d’autres utilisateurs/d’autres postes sont impactés, il faudra reproduire la manipulation !

Grafana – Ajout de Scom en tant que Data Source et création d’un dashboard des alertes

 

Grafana (https://grafana.com/) est une solution de Dashboard open source particulièrement souple et ouverte grâce a de nombreux plugin et data source intégrables.

Dans cet exemple nous allons ajouter l’accès a une base sql SCOM en tant que Data Source et créer un Dashboard des alertes.

 

clip_image002

Dans la zone Configuration de l’interface Grafana nous selectionnons “Data Sources”

clip_image004

Clic sur “Add data source”

clip_image006

On renseigne un nom

On selectionne le Type “Microsoft SQL Server”

On renseigne le nom de l’instance, la base et le compte d’acces.

Clic sur “Save and Test”

clip_image008

clip_image010

clip_image012

Dans la zone “Create” de Grafana, on selectionne “Dashboard”

On ajoute maintenant au Dashboard, un panel qui sera en fait une brique du dashboard.

clip_image014

On sélectionne le modèle “Table”

clip_image016

On clique sur “Panel Title” en haut du tableau et on sélectionne “Edit”

clip_image018

Dans l’onglet “General”, Dans Title, on renseigne un nom.

clip_image020

On se positionne sur l’onglet “Metrics” et on selectionne dans “Data Source” la source de donnée.

clip_image022

Dans le champ de la première Query (A), on colle le code sql correspondant a une sélection des alertes non closes (fichier sql ci-dessous)

 

 

 

clip_image024

Les données sont immédiatement affichées.

on va maintenant effectuer quelques configuration de formatage.

clip_image026

Dans l’onglet “Options” on augmente le champs “Rows per page” a 1000 pour eviter d’avoir trop de pages.

clip_image028

La colonne Severity nous affiche deux decimale apres la virgule. Inutile dans notre cas car cette valeur correspond a des codes de severité (0,1,2)

clip_image030

Pour cela, dans l’onglet “Column Styles”, on ajoute une règle (+Add)

clip_image032

On selectionne dans “Apply to Columns named” la colonne Severity (au passage, notre règle prend le nom de la colonne sélectionnée)

Et on positionne le champ “Decimals” a 0.

clip_image034

Tres bien, mais il serait plus parlant d’avoir les noms de séverité correspondant a ces codes…

clip_image036

On positionne le champ “Type” a String

clip_image038

Et on fait correspondre a chaque code, la valeur adéquate.

clip_image040

Tres bien. Et pour parfaire ce formatage, on va ajouter un peu de couleur…

clip_image042

Dans le champ Threshold, on va definir que les alertes de séverité 1 prennent une couleur orange (WARNING), et les alertes de séverité 2 une couleur rouge (CRITICAL).

NB: L’ordre des couleurs suit l’ordre des seuils (Threshold), séparés par une virgule.

clip_image044

Et l’on peut appliquer ce formattage de couleur a la celulle, en selectionnant la valeur Cell dans le champ “Color Mode”

clip_image046

clip_image048

clip_image050

N’oublions pas de sauvegarder notre dashboard en haut a droite de l’interface Grafana

clip_image052

clip_image054

Dernier petit réglage pour que notre dashboard se rafraichisse automatiquement

clip_image056

On clique sur les settings du dashboard en haut a droite de l’interface Grafana

clip_image058

clip_image060

On positionne la Time Zone a celle du navigateur (Local browser time) et l’auto-refresh a 1m (1 minute).

On sauvegarde ces réglages via le bouton Save.

Sécurité : Local Admin Password Solution (LAPS) - Partie 4

Réinitialisation du mot de passe :

Avec un compte faisant partie de "Read_Laps"

Normalement lorsqu'un compte ne fait pas partie du groupe "Reset_Laps", il ne bénéficie pas du droit de réinitialiser le mot de passe, vérifions cela.

Avec le client lourd  :

En effet nous pouvons constater que lorsque l'on essaie de réinitialiser le mot de passe le client affiche au bas de la fenêtre un message "Failed to request password reset"

Avec Powershell :

Avec Powershell le résultat est le même (voir plus explicite), l'utilisateur ne possède pas les droits.

Avec un compte faisant partie de "Reset_Laps"

 

Maintenant nous allons utiliser un compte qui se trouve dans le groupe "Reset_Laps" mais pas dans le groupe "Read_Laps", par conséquent il n'est pas possible de lire le mot de passe mais je devrais pouvoir le réinitialiser. 

Avec le client lourd  :

Cette fois-ci nous pouvons constater que le mot de passe n'est pas lisible, et au bas du client lourd le message "Password reset request was successful".

Avec Powershell :

Conclusion :

Grâce à cette solution gratuite de Microsoft vous pouvez améliorer la sécurité de votre parc informatique en réduisant la portée d'attaque d'une intrusion à l'aide du compte administrateur local.

 

https://www.microsoft.com/en-us/download/details.aspx?id=46899&wt.mc_id=fy16techdays

https://technet.microsoft.com/en-us/library/security/3062591?wt.mc_id=fy16techdays

https://blogs.msdn.microsoft.com/laps/

https://support.microsoft.com/en-us/kb/3062591

[Powershell] Héritage des GPO bloqué

 

Voici quelques commandes Powershell pour trouver les OU dont l'héritage est bloqué:

$GPOBlocked = Get-ADOrganizationalUnit -SearchBase "DC=LAB,DC=Org" -Filter * | Get-GPInheritance | Where-Object {$_.GpoInheritanceBlocked}
$GPOBlocked.count
$GPOBlocked | Select Name,Path

Le DistinguishedName (Path) n'est pas toujours agréable à lire je fais donc une conversion en CanonicalName, ensuite vous pouvez afficher les données à l'écran ou les écrire dans un fichier:

$GPOBlocked | ForEach-Object {
        $Name = $_."Name"
        $Path = $_."Path"
        $CanonicalName = Get-ADOrganizationalUnit -Filter {DistinguishedName -like $Path} -Properties CanonicalName | Select-Object -ExpandProperty CanonicalName
        Write-Output "$Name; $CanonicalName" | Add-Content C:\Temp\GpoInheritanceBlocked.txt
    }

 

 

[Powershell] Excel ne s'enregistre pas via le Planificateur de tâches

Lancer un script Powershell via le planificateur de tâches ne pose aucun problème, en revanche si ce dernier souhaite utiliser Excel (par l'intermédiaire de la commande "new-object -comobject excel.application") on peut rencontrer un problème.

Je dis "on peut" car cela fonctionne si l'on a pas coché la case "Run Whether user is logged on or not", en revanche si cette dernière est cochée, Excel ne sera pas en mesure d'enregistrer le fichier.

Pourquoi ?

Par défaut l'application Excel s'exécute avec le compte "Utilisateur exécutant (The Launching User)", mais si j'utilise une tâche planifiée qui ne nécessite pas que je sois connecté Excel ne parvient pas a déterminer qui fait appel à lui.

Que Faire ?

Simplement en déclarant qui  exécute l'application Excel via la MMC -> Services des composants.

Je vous renvoie au point 2 (Gestion de l'Excel distant) de mon précédent article : [Powershell] Ecrire dans un Excel distant.

Sécurité : Local Admin Password Solution (LAPS) - Partie 3

Vérifications Serveur / Clients

Depuis le serveur

Vérifions l'état du mot de passe du compte Administrateur Local d'une machine cible.

Avec le client lourd  :

Avec Powershell :

Depuis l'Active Directory dans l'onglet éditeur d'attribut 

Depuis le poste Client

Avec un compte faisant partie de "Read_Laps"

Réalisons donc une mise à jour de la stratégie de groupe 

Nous allons pouvoir vérifier l'état du mot de passe du compte admin local.

 

Avec le client lourd  :

Avec Powershell :

Avec un compte faisant partie de "Reset_Laps"

Avec le client lourd  :

Avec Powershell :

 

Test de connexion

Nous testerons donc de nous connecter à la machine avec le nouveau mot de passe

C'est fonctionnel.