Le compilateur MOF (Managed Object Format) analyse un fichier contenant des instructions MOF et ajoute les classes et les instances de classe définies dans le fichier au référentiel WMI. Les fichiers MOF sont généralement compilés automatiquement lors de l’installation des systèmes avec lesquels ils sont fournis, mais vous pouvez également compiler des fichiers MOF à l’aide de cet outil.
Pour plus d’informations sur la localisation et l’utilisation de mofcomp.exe, consultez Utilisation des outils de gestion WMI. Pour plus d’informations sur la suppression de classes et d’instances du référentiel WMI, consultez la commande de préprocesseur pragma deleteclass.
L’exemple de code suivant montre comment exécuter le compilateur MOF sur un fichier.
Ajoute le fichier MOF nommé à la liste des fichiers compilés pendant la récupération du référentiel. La liste des fichiers MOF de récupération automatique est stockée dans la clé de Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WBEM\CIMOM\
Les fichiers MOF répertoriés dans cette entrée de Registre doivent résider sur l’ordinateur local, car les fichiers MOF qui utilisent la commande de récupération automatique ne peuvent pas récupérer les fichiers MOF situés sur un ordinateur distant.
Notes
Pour vous assurer que toutes vos définitions de classe WMI pour les objets managés sont restaurées dans le référentiel WMI en cas d’échec et de redémarrage de WMI, utilisez l’instruction de préprocesseur de récupération automatique #pragma dans votre fichier MOF ( Managed Object Format ).
-Vérification
Demande au compilateur d’effectuer une vérification de syntaxe uniquement et d’imprimer les messages d’erreur appropriés. Aucun autre commutateur ne peut être utilisé avec ce commutateur. Lorsque ce commutateur est utilisé, aucune connexion à Windows Management Instrumentation (WMI) n’est établie et aucune modification n’est apportée au dépôt WMI.
-N:<namespacepath>
Demande que le compilateur charge le fichier MOF dans l’espace de noms spécifié en tant que *namespacepath*. Le MOF compilé est chargé dans l’espace de noms Mofcomp par défaut, root\\default, sauf si ce commutateur est utilisé. Vous pouvez également insérer la commande de préprocesseur **\#pragma espace de noms (« ***chemin d’espace de noms*** »)** dans le fichier MOF pour obtenir le même effet. Si le commutateur **-N:** et la commanded’espace de noms \#pragma sont utilisés, l’espace de noms \#**pragma** **la récupération automatique** est prioritaire. Dans ce cas, la seule façon de compiler le MOF dans un autre espace de noms consiste à modifier le fichier MOF et à modifier la commande \#**pragma namespace**. Un ordinateur distant peut être spécifié à l’aide de \\\nom_machine\\root\\default.
-class:createonly
Demande que le compilateur n’apporte aucune modification aux classes existantes. Lorsque ce commutateur est utilisé, l’opération de compilation s’arrête si une classe spécifiée dans le fichier MOF existe déjà.
-class:forceupdate
Force les mises à jour des classes lorsqu’il existe des classes enfants en conflit. Par exemple, supposons qu'un qualificatif de classe soit défini dans une sous-classe et que la classe de base tente d'ajouter le même qualificatif. En mode -class:forceupdate , le compilateur MOF résout ce conflit en supprimant le qualificateur en conflit dans la classe enfant. Si la sous-classe comprend des instances, la mise à jour forcée échoue.
-class:safeupdate
Autorise les mises à jour des classes, même s’il existe des classes enfants, tant que la modification n’entraîne aucun conflit avec les classes enfants. Par exemple, cet indicateur permet d’ajouter une nouvelle propriété à la classe de base qui n’a pas été mentionnée précédemment dans les sous-classes. Si les classes enfants ont des instances, la mise à jour échoue.
-class:updateonly
Demande au compilateur de ne pas créer de nouvelles classes. Lorsque ce commutateur est utilisé, l’opération de compilation se termine si aucune classe spécifiée dans le fichier MOF n’existe.
-instance:updateonly
Demande au compilateur de ne pas créer de nouvelles instances. Lorsque ce commutateur est utilisé, l’opération de compilation se termine si une instance spécifiée dans le fichier MOF n’existe pas.
-instance:createonly
Demande que le compilateur n’apporte aucune modification aux instances existantes. Lorsque ce commutateur est utilisé, l’opération de compilation s’arrête si une instance spécifiée dans le fichier MOF existe déjà.
-B:<nom de fichier>
Demande au compilateur de créer une version binaire du fichier MOF avec le nom de fichier sans apporter de modifications au dépôt WMI.
Si vous utilisez l’option -B:<filename> pour créer un fichier MOF binaire, seules les versions de qualificateur par défaut sont stockées dans le référentiel WMI.
Le format MOF binaire est le format intermédiaire permettant de combiner un pilote WDM avec le MOF en tant que ressource. Le MOF binaire représente des classes et des instances comme le fait un fichier MOF texte et est compressé avant d’être stocké sur disque.
-WMI
Demande au compilateur d’effectuer une vérification de syntaxe WMI. Le commutateur -B: doit être utilisé avec ce commutateur. Le commutateur -WMI est utilisé uniquement pour créer des fichiers MOF binaires à utiliser par les pilotes de périphérique WDM. Ce commutateur appelle un vérificateur de fichiers MOF binaire distinct, qui s’exécute après la création du fichier MOF binaire.
-P:<Mot de passe>
Spécifiemot de passe comme mot de passe que l’utilisateur de l’ordinateur doit entrer lors de la connexion.
-U:<Nom d’utilisateur>
Spécifie Nom d'utilisateur comme nom de l’utilisateur qui se connecte.
-A:<Autorité>
Spécifie l’autorité comme autorité (nom de domaine) à utiliser lors de la connexion à WMI.
-MOF:<path>
Nom de la sortie de langue neutre. Utilisé avec le commutateur -AMENDMENT pour spécifier le nom du fichier MOF sans langue qui sera généré.
-MFL:<path>
Nom de la sortie spécifique à la langue. Utilisé avec le commutateur -AMENDMENT pour spécifier le nom du fichier MOF sans langue qui sera généré.
-AMENDMENT:<Paramètres régionaux>
Fractionne le fichier MOF en versions indépendantes et spécifiques au langage. Le compilateur MOF crée une forme indépendante du langage du fichier MOF dans laquelle tous les qualificateurs modifiés ont été supprimés. Une version localisée du fichier MOF est également créée avec une extension de nom de fichier MFL. Le paramètre Paramètres régionaux spécifie le nom de l’espace de noms enfant qui contient les définitions de classe localisées. Le format du paramètre Paramètres régionaux est MS_xxx où xxx est la valeur hexadécimale du LCID Windows. Par exemple, les paramètres régionaux de l’anglais américain sont MS_409.
-ER <ResourceName>
Extrait le MOF binaire d’une ressource nommée. Ce commutateur obtient le MOF binaire à partir de la classe dans le référentiel WMI tandis que le commutateur -B crée le format MOF binaire à partir d’un fichier MOF.
-L:<ResourceLocale>
Optionnel. Extrait les descriptions MOF localisées du MOF binaire lorsqu’il est utilisé avec le commutateur -ER.
<
MOFfile>
Nom du fichier à analyser.
Valeurs de retour
Comme première opération, le compilateur MOF exécute une syntaxe case activée sur le fichier MOF. Si le compilateur détecte des erreurs, il imprime un message d’erreur et le processus se termine.
Le compilateur MOF peut retourner les valeurs suivantes :
0
L’opération de compilation MOF a réussi.
1
Le compilateur MOF n’a pas pu se connecter au serveur WMI. Cela est dû à une erreur sémantique telle qu’une incompatibilité avec le dépôt WMI existant ou à une erreur réelle telle que l’échec du démarrage du serveur WMI.
2
Un ou plusieurs commutateurs de ligne de commande n’étaient pas valides.
3
Une erreur de syntaxe MOF s'est produite.
Si le fichier MOF est analysé correctement, mais qu’une tentative d’exécution d’une opération interdite par un commutateur de ligne de commande est effectuée, le compilateur retourne un code d’erreur généré par WMI au lieu de l’un des codes de retour répertoriés dans la liste précédente. Par exemple, un code d’erreur WMI est retourné lorsque le commutateur -instance:updateonly est spécifié et que le fichier MOF tente de créer une instance.
WARNING: FileYourMof.Mof does not contain #PRAGMA AUTORECOVER.
If the WMI repository is rebuilt in the future, the contents of this
MOF file will not be included in the new WMI repository.
To include this MOF file when the WMI Repository is automatically
reconstructed, place the #PRAGMA AUTORECOVER statement on the first
line of the MOF file.
Notes
Le compilateur MOF est disponible dans le répertoire %Windir%\System32\wbem. Vous devez spécifier le fichier MOF comme paramètre du compilateur MOF. Vous pouvez également spécifier un commutateur de récupération automatique si vous souhaitez que le fichier MOF soit automatiquement recompilé si le référentiel CIM doit être récupéré automatiquement. Pour plus d’informations, tapez Mofcomp /? à l’invite de commandes.
Un fichier MOF qui utilise le jeu de caractères Unicode contient une signature en tant que deux premiers octets du fichier. Cette signature est U+FFFE ou U+FEFF, selon l’ordre d’octet du fichier.
Lorsqu’aucune erreur ne se produit dans le processus d’analyse, le compilateur MOF se connecte au serveur WMI s’exécutant sur l’ordinateur local, sauf si le commutateur -check est spécifié. Les classes et les instances définies dans le fichier MOF sont ajoutées au référentiel WMI.
Lorsqu’une erreur se produit lors de la mise à jour du référentiel WMI, le compilateur n’essaie pas de retourner le dépôt à son état avant le début du traitement.
Windows 8 : lors de l’installation d’un fournisseur, mofcomp traite les qualificateurs [Clé] et [Statique] comme true s’ils sont présents, quelles que soient leurs valeurs réelles. Les autres qualificateurs sont traités comme false s’ils sont présents, mais ne sont pas explicitement définis sur true.
Ce module explique comment utiliser CIM et WMI pour apporter des modifications en utilisant des méthodes. Les méthodes disponibles varient selon le type d’objet. La découverte et la compréhension de ces méthodes constituent une étape importante dans l’interrogation et la manipulation des informations de dépôt.