Les articles publiés sur ce blog, ont pour but de partager des connaissances/concepts techniques et sont tous réalisés dans un environnement de test. Par conséquent, les auteurs dégagent toute responsabilité, de quelque ordre que ce soit, quant aux dommages directs, indirects ou consécutifs résultant de l’utilisation des informations contenus dans ceux-ci.
Introduction
A notre connaissance, il n’existe pas de moyen simple de récupérer aisément/graphiquement, la configuration d’un MIM (Atrribute flow, set, workflow,MPR, custom attribute, etc…).
MIM Configuration Documenter apporte une aide dans la mesure où cet outil génère un rapport html qui contient toute la configuration FIMSync & MIMService. Comme nous le verrons, le rapport html n’est pas aisément exploitable, mais c’est toujours mieux que rien.
A noter que cet outil n’outrepasse en rien l’obligation d’avoir des sauvegardes régulières et exploitables des bases de données FIMSync et FIMService.
Prérequis
- Framework .NET 4.5 présent pour exécuter l’outil.
- Module PowerShell FIMAutomation installé sur le serveur MIM pour pouvoir exporter et générer le rapport sur la configuration de MIM Service.
- Navigateur web (ex: Microsoft Edge) pour visualiser le rapport.
- Télécharger la dernier version de l’outil MIMConfigDocumenter (téléchargez le fichier MIMConfigDocumenter.zip)
- S’assurer que le fichier zip téléchargé précédemment ne soit pas bloqué avant de le décompresser dans un répertoire vide.
- Téléchargez les fichiers :
Installation
Téléchargez et décompressez le fichier MIMConfugDocumenter.zip (ex: c:\MIMConfigDocumenter)
Copiez les fichiers ExportSchema.ps1 et ExportPolicy.ps1 dans le répertoire décompressé MIMConfigDocumenter
FIMAutomation
Le module FIMAutomation est généralement installé lorsqu’on installe MIMService. Cependant, il arrive que celui-ci soit « écrasé » quand on déploie le module PowerShell LithnetRMA ou LithnetMIISAutomation.
Dans les étapes ci-dessous nous allons voir comment générer le module FIMAutomation nécessaire pour l’exécution du MIMConfigDocumenter.
Sur le serveur MIM, aller dans le répertoire C:\Program Files\Microsoft Forefront Identity Manager\2010\Service
Recherchez les fichiers :
- Microsoft.ResourceManagement.Automation.dll
- Microsoft.ResourceManagement.dll
Dans le répertoire C:\Windows\System32\WindowsPowerShell\v1.0\Modules\
Créer le répertoire FIMAutomation
Copiez les fichiers dll, indiqués précédemment, dans le répertoire FIMAutomation
Ouvrez une console PowerShell en Runas administrator et tapez les cmdlets suivantes :
sl C:\Windows\System32\WindowsPowerShell\v1.0\Modules\FIMAutomation
New-ModuleManifest -Path .\FIMAutomation.psd1 -RootModule Microsoft.ResourceManagement.Automation.dll -RequiredAssemblies (dir *.dll)
Get-Module -ListAvailable FIMAutomation

La cmdlet New-ModuleManifest a permit de créer le module PowerShell FIMAutomation
Configuration
ExportPolicy.ps1
Editez le fichier ExportPolicy.ps1
Préfixez la ligne ci-dessous par un « # » afin de commenter celle-ci
#if(@(get-pssnapin | where-object {$_.Name -eq “FIMAutomation”} ).count -eq 0) {add-pssnapin FIMAutomation}
Remplacer la ligne par:
Import-Module FIMAutomation

ExportSchema.ps1
Editez le fichier ExportSchema.ps1
Préfixez la ligne ci-dessous par un « # » afin de commenter celle-ci
#if(@(get-pssnapin | where-object {$_.Name -eq “FIMAutomation”} ).count -eq 0) {add-pssnapin FIMAutomation}
Remplacez la ligne par:
Import-Module FIMAutomation

MIMConfigDocumenter.psm1
Editez le fichier MIMConfigDocumenter.psm1
Préfixez la ligne ci-dessous par « # »
$matches = Join-FIMConfig -Source $pilot -Target $production -Join $joinrules -DefaultJoin DisplayName
Par défaut la cmdlet se base sur le DisplayName pour différencier les objets. Hors cet attribut n’est pas unique surtout dans le portail car certains types d’objets ont le même DisplayName, raison pour laquelle l’ObjectID a été choisi car lui est unique.
Remplacez la ligne par
$matches = Join-FIMConfig -Source $pilot -Target $production -Join $joinrules -DefaultJoin ObjectID

MIMConfigDocumenter
Dans le répertoire MIMConfigDocumenter\Data
Copiez le répertoire Contoso (ainsi que sa sous-arborescene)
Copiez le et renommez le en MyMIMConfig
Faites une copie du fichier InvokeDocumenter-Constoso.ps1
Renommez le fichier copié (ex : InvokeDocumenter-MIMConfig-PRD.ps1)
Éditez le fichier InvokeDocumenter-MIMConfig-PRD.ps1
Modifiez la ligne $pilotConfig
Remplacez Contoso\Pilot par MyMIMConfig\Pilot

Export des configurations FIM Synchronizatoin et MIM Service
FIMSync
Lancez la console Synchronization Service Manager
Sélectionnez le menu File
Sélectionnez Export Server Configuration…

Cliquez sur OK

L’export doit être réalisé dans un répertoire vide pour que celui-ci fonctionne

Le répertoire c:\temp contient un fichier MV.xml (MetaVerse) MA-xxxx.xml (un fichier pour chaque Management Agent configuré)
Copiez les fichier nouvellement créés dans c:\temp dans le répertoire C:\MIMConfigDocumenter\Data\MyMIMConfig\Pilot\SyncConfig
Pensez à purger les fichiers éventuellement présents dans le répertoire SyncConfig
MIM Service
Ouvrez un prompt PowerShel Runas administrator et tapez les cmdlets suivantes :
sl c:\MIMConfigDocumenter
.\ExportSchema.ps1

.\ExportPolicy.ps1

Copiez les fichiers de configuration policy.xml et schema.xml dans C:\MIMConfigDocumenter\Data\MyMIMConfig\Pilot\ServiceConfig
Les fichiers FIM/MIM Service schema et policy doivent impérativement porter les noms schema.xml et policy.xml.
Génération du rapport MIMConfigDocumenter
Exécution InvokeDocumenter-MIMConfig-PRD.ps1
Ouvrez un prompt PowerShell Runas administrator et tapez
Unblock-File C:\MIMConfigDocumenter\
sl C:\MIMConfigDocumenter\
.\InvokeDocumenter-MIMConfig-PRD.ps1

Récupération/analyse du rapport de configuration
Allez dans le répertoire c:\MIMConfigDocumenter
Dans le répertoire Report, créé par InvokeDocumenter-MIMConfig-PRD.ps1, lancez le fichier html correspondant au rapport de configuration.
Privilégiez un navigateur web récent


Conclusion
Comme indiqué en introduction le rapport html n’est pas aisément exploitable.
Cependant, l’outil nous permet également de faire des comparaisons de configuration entre différents environnements. Ce qui peut nous aider à détecter d’éventuels problèmes de configuration ou vérifier les modifications apportées depuis la dernière exécution. Dans notre cas, nous l’utilisons comme archive en cas de corruption/perte des backups des bases de données FIMSync et FIMService ou d’audit. Bien que cela n’empêchera pas de tout réinstaller/reconfigurer, cela permettra au moins de ne pas se poser la question de comment étaient configurés certains set, workflows, etc… avant la corruption
A ciao have fun !!!