Le média dynamique ne peut pas obtenir les emplacements de point de gestion lorsque l’Assistant séquence de tâches s’exécute dans Windows PE

Cet article résout un problème dans lequel le contenu multimédia dynamique de Configuration Manager ne peut pas obtenir les emplacements de point de gestion lorsque l’Assistant séquence de tâches s’exécute dans l’environnement de préinstallation de Microsoft Windows (Windows PE).

Version du produit d’origine :   Gestionnaire de configuration (branche actuelle), Microsoft System Center 2012 R2 Configuration Manager
Numéro de la base de connaissances initiale :   4471115

Symptômes

Vous utilisez le multimédia dynamique dans le gestionnaire de configuration. Lorsque l’Assistant séquence de tâches démarre pour la première fois dans Windows PE, la communication initiale avec le point de gestion pour synchroniser les paramètres de temps est réussie, comme illustré dans l’entrée SMSTS. log suivante :

TSMBootstrap obtenir des informations sur le temps multiprocesseur
TSMBootstrap définir l’authentificateur en transport
TSMBootstrap demandant l’identité du client
TSMBootstrap définition des signatures de message.
TSMBootstrap définissant l’authentificateur.
TSMBootstrap CLibSMSMessageWinHttpTransport :: Send : URL : MP_ServerCCM_POST/ccm_system/Request
La demande TSMBootstrap a réussi.

Toutefois, la demande ultérieure au point de gestion pour obtenir les informations d’emplacement échoue, comme illustré dans l’entrée SMSTS. log suivante :

IP TSMBootstrap : 192.168.0.100 192.168.0.0
TSMBootstrap CLibSMSMessageWinHttpTransport :: Send : URL : MP_Server GET/SMS_MP/. sms_aut ? MPLOCATION&IR = 192.168.0.100&IP = 192.168.0.0
Erreur TSMBootstrap. Code d’état 500 retourné
Erreur d’analyse XML TSMBootstrap à la ligne 1 char 11 : la DTD est interdite.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
TSMBootstrap bSuccess = = ((VARIANT_BOOL)-1), HRESULT = 80004005 (e:\ CM1706_RTM \sms\common\inc\ccmxml.h, 1151)
TSMBootstrap oXMLDoc. loadFromXML (sReply. c_str ()), HRESULT = 80004005 (e:\ cm1706_rtm \sms\framework\osdmessaging\libsmsmessaging.cpp, 5767)
Erreur TSMBootstrap lors du chargement à partir de XML
TSMBootstrap CCM :: SMSMessaging :: CLibSMSMPLocation :: RequestMPLocation a échoué ; 0x80004005
TSMBootstrap MPLocation. RequestMPLocation (szTrustedRootKey, sIPSubnets. c_str (), sIPAddresses. c_str (), HTTPS, http), HRESULT = 80004005 (e:\ cm1706_rtm \sms\framework\osdmessaging\libsmsmessaging.cpp, 10164)
TSMBootstrap CCM :: SMSMessaging :: GetMPLocations a échoué ; 0x80004005
TSMBootstrap échec de l’interrogation de MP_Server pour l’emplacement de MP

Notes

Les adresses IP de la première ligne de cette entrée de journal correspondent aux adresses IP de l’ordinateur client et de son sous-réseau.

Si plusieurs points de gestion sont définis dans le média dynamique, la même erreur se produit quel que soit le point de gestion que le gestionnaire de configuration tente de communiquer. Si vous essayez d’utiliser la même URL dans un navigateur, comme dans l’exemple suivant, cela provoque également une erreur 500   :

http://MP_Server/SMS_MP/.sms_aut?MPLOCATION&ir=192.168.15.100&ip=192.168.0.0

Les journaux IIS (Internet Information Services) sur le point de gestion ne révèlent pas une entrée d’erreur 500 correspondante. Au lieu de cela, une entrée de réussite 200 s’affiche. Si vous activez le suivi des demandes ayant échoué dans IIS pour le message d’erreur 500 , vous trouvez le message d’erreur suivant :

CALL_ISAPI_EXTENSION DllName = "MP_Install_Directory\getauth.dll"
MODULE_SET_RESPONSE_ERROR_STATUS
AVERTISSEMENT ModuleName = "IsapiModule", notification = "EXECUTE_REQUEST_HANDLER", HttpStatus = "500", HttpReason = "erreur de serveur interne", HttpSubStatus = "0", ErrorCode = "l’opération s’est terminée avec succès.
(0x0) ", ConfigExceptionInfo =" "

Pour plus d’informations sur l’activation du suivi des demandes ayant échoué dans IIS pour les messages d’erreur 500 , consultez la rubrique Troubleshooting Failed Request using Tracing in IIS 8,5.

Le fichier MP_GetAuth. log sur le point de gestion affiche l’entrée d’erreur suivante qui a été enregistrée lorsque le client a effectué la demande enregistrée dans le SMSTS. log :

MP_GetAuth_ISAPI MP GA nombre de packs de MPs dans le site = <Number_Of_MPs_At_Site>
MP_GetAuth_ISAPI MP GA : corps de la réponse d’authentification réelle :
<MPList><XML_List_Of_MPs_At_Site></MPList>
MP_GetAuth_ISAPI MP GA : GetAuthSendResponseHeaders : envoi de la réponse 200 OK
MP_GetAuth_ISAPI MP GA : GetAuthDoneWithSession : ServerSupportFunction () a retourné 0x0
MP_GetAuth_ISAPI MP GA : HttpExtensionProc : GetAuthProcessRequest () a renvoyé 1
MP_GetAuth_ISAPI MP GA : chaîne de requête avant le décodage : MPLOCATION&IR = 192.168.0.100&IP = 192.168.0.0
MP_GetAuth_ISAPI MP GA : chaîne de requête après décodage : MPLOCATION&IR = 192.168.0.100&IP = 192.168.0.0
MP_GetAuth_ISAPI MP GA : le type de demande d’authentification est MPLOCATION&IR = 192.168.0.100&IP = 192.168.0.0
MP_GetAuth_ISAPI plus de lignes.
MP_GetAuth_ISAPI plus de lignes.
La chaîne mise en forme MP_GetAuth_ISAPI a dépassé la taille maximale de la mémoire tampon. Le résultat est tronqué.
MP_GetAuth_ISAPI m_docReply. LoadFromString (String (bstrMPLocationXML), false), HRESULT = 8000ffff (e:\ nts_sccm_release \sms\mp\isapi\getauth\getauth.cpp, 994)
MP_GetAuth_ISAPI HR, HRESULT = 8000ffff (e:\ nts_sccm_release \sms\mp\isapi\getauth\getauth.cpp, 2124)
MP_GetAuth_ISAPI AuthRequest. ProcessGETRequest (), HRESULT = 8000ffff (e:\ nts_sccm_release \sms\mp\isapi\getauth\getauth.cpp, 98)
MP_GetAuth_ISAPI MP GA : GetAuthSendResponseHeaders : envoi de la réponse 500 erreur de serveur interne
MP_GetAuth_ISAPI MP GA : GetAuthDoneWithSession : ServerSupportFunction () a retourné 0x0
MP_GetAuth_ISAPI MP GA : HttpExtensionProc : GetAuthProcessRequest () a retourné 4

Le problème ne se produit pas pour les supports de site ou PXE (Preboot Execution Environment) via le gestionnaire de configuration. Toutefois, le problème peut se produire si vous utilisez des solutions PXE tierces qui peuvent utiliser des médias dynamiques.

Cause

Ce problème se produit car il existe plusieurs objets ordinateur inconnus pour un site Web spécifique, et ce site comporte plusieurs points de gestion. Un grand nombre de résultats est alors renvoyé lorsque MPLOCATION est appelé et que la GetMPLocationForIPSubnet procédure stockée est exécutée.

Pour exécuter GetMPLocationForIPSubnet manuellement sur le serveur qui exécute SQL Server via SQL Management Studio, exécutez la requête suivante :

exec GetMPLocationForIPSubnet N'192.168.0.0'

Dans ce scénario. Cette commande renvoie plusieurs centaines de lignes. Ce nombre de lignes est supérieur à la taille maximale de la mémoire tampon. Cela provoque à son tour le message d’erreur 500 et provoque également l' MPLOCATION échec.

Résolution

Tous les sites ne doivent avoir qu’un seul objet ordinateur inconnu par architecture. Par exemple, il ne doit y avoir qu’un seul objet x64 étiqueté ordinateur non reconnu x64 et un seul objet x86 étiqueté ordinateur inconnu. Si un site comporte plus d’un objet ordinateur inconnu par architecture, les objets ordinateur inconnus supplémentaires doivent être supprimés. La suppression d’objets ordinateur inconnus supplémentaires ne peut être réalisée qu’à partir de la base de données SQL Server. Elle ne peut pas être exécutée à partir de la console du gestionnaire de configuration.

Notes

La création d’objets ordinateur inconnus supplémentaires pour empêcher les ordinateurs clients de voler le GUID des objets ordinateur inconnus n’est pas la bonne méthode pour résoudre ce problème. Pour la méthode correcte, voir un ordinateur client peut voler le GUID du gestionnaire de configuration d’un objet ordinateur inconnu pendant la création d’une image.

Pour supprimer les objets ordinateur inconnus supplémentaires, procédez comme suit :

  1. Assurez-vous que vous disposez d’une sauvegarde actuelle et valide du site gestionnaire de configuration à l’aide de la tâche de maintenance de sauvegarde intégrée.

  2. Ouvrez la console Configuration Manager. S’il existe plusieurs sites principaux, nous vous recommandons d’ouvrir une console Configuration Manager qui est connectée au site Administration centrale.

  3. Dans la console Configuration Manager, accédez à groupes de périphériques de présentation des biens et de la conformité > Overview > Device Collections.

  4. Double-cliquez sur la collection tous les ordinateurs inconnus .

  5. Dans le volet résultats, triez les objets de la collection tous les ordinateurs inconnus en sélectionnant la colonne Code du site .

  6. Notez s’il existe plusieurs objets ordinateur inconnus x64 ou des objets ordinateur inconnus x86 pour un site individuel.

  7. S’il existe plusieurs objets ordinateur inconnus x64 ou des objets ordinateur inconnus x86 pour un site individuel, cliquez avec le bouton droit sur les colonnes dans le volet résultats, puis ajoutez ID de ressource à la liste des colonnes.

  8. Déterminez la valeur d' ID de ressource la plus faible   pour chaque objet ordinateur inconnu x64 ou chaque objet ordinateur inconnu x86 pour un site. Dans la plupart des cas, pour le premier site principal d’un environnement, les ID de ressource pour les objets ordinateur inconnus d’origine pour les sites seront 2046820352 (ordinateur inconnu x86) et 2046820353 (ordinateur inconnu x64).

  9. Une fois que vous avez déterminé l' ID de ressourcele plus bas, tous les autres objets d' ordinateur inconnus x64 ou les objets d' ordinateur inconnus x86 pour tout site peuvent être supprimés. Notez tous les ID de ressource pouvant être supprimés et le site auquel ils appartiennent.

  10. Ouvrez SQL Server Management Studio, puis connectez-vous à la base de données pour le site qui héberge les objets ordinateur inconnus supplémentaires.

  11. Développez le nœud bases de données , puis sélectionnez la base de données Gestionnaire de configuration (généralement CM_Site_Code).

  12. Dans la barre d’outils, sélectionnez nouvelle requête.

  13. Assurez-vous que la base de données appropriée est sélectionnée dans le menu déroulant à gauche du bouton exécuter de la barre d’outils.

  14. Dans le volet requête, exécutez la requête SQL suivante :

    SELECT C.CollectionID, C.SiteID, C.CollectionName, CM.MachineID, CM.Name FROM Collections C
    JOIN CollectionMembers CM ON C.SiteID = CM.SiteID
    JOIN UnknownSystem_DISC USD ON USD.ItemKey = CM.MachineID
    

    Cette requête affiche toutes les collections auxquelles tous les objets ordinateur inconnus appartiennent. Utilisez cette requête pour déterminer les collections auxquelles les objets ordinateur inconnus doivent être ajoutés. Cela doit être basé sur l’appartenance des objets ordinateur inconnus qui sont supprimés. L' ID de ressource est affiché dans la colonne MachineId .

  15. Dans le volet requête, exécutez la requête SQL suivante :

    SELECT * FROM UnknownSystem_DISC WHERE ItemKey IN ('Extra_Resource_ID_1','Extra_Resource_ID_2', 'Extra_Resource_ID_3')
    

    Dans cette requête, Extra_Resource_ID_x est l’ID de ressource de chacun des objets ordinateur inconnus supplémentaires, comme déterminé à l’étape 9. Par exemple, si les ID de ressource supplémentaires sont 2046820354 et 2046820355, la requête se présente comme suit :

    SELECT * FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354','2046820355 ')
    
  16. Vérifiez que les enregistrements renvoyés par la requête à l’étape 15 sont corrects. Si c’est le cas, exécutez la requête suivante pour supprimer les enregistrements :

    DELETE FROM UnknownSystem_DISC WHERE ItemKey IN ('Extra_Resource_ID_1','Extra_Resource_ID_2', 'Extra_Resource_ID_3')
    

    Dans cette requête, Extra_Resource_ID_x est l’ID de ressource de chacun des objets ordinateur inconnus supplémentaires, comme déterminé à l’étape 9. Par exemple, si les ID de ressource supplémentaires sont 2046820354 et 2046820355, la requête Delete se présente comme suit :

    DELETE FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354', '2046820355')
    
  17. Patientez quelques minutes, revenez à la console Configuration Manager, puis accédez à la collection de périphériques de présentation des biens et de la conformité > Overview > Device Collections.

  18. Cliquez avec le bouton droit sur la collection tous les ordinateurs inconnus , puis sélectionnez mettre à jour l’appartenance.

  19. Patientez quelques minutes, puis sélectionnez Actualiser. Vérifiez qu’un seul objet ordinateur inconnu ou 64 un objet ordinateur inconnu x86 existe pour chaque site.

  20. Répétez les étapes 10-19 pour tous les sites principaux supplémentaires, le cas échéant.

Recréer des objets ordinateur inconnus en cas de suppression accidentelle

Quelle que soit la raison, si tous les objets ordinateur inconnus sont supprimés accidentellement pour un site qui utilise ce processus, ils peuvent être recréés à l’aide des étapes suivantes. Ces étapes doivent être effectuées uniquement s’il n’y a pas d’objets ordinateur inconnus pour un site. S’il n’existe qu’un seul des deux objets ordinateur inconnus sur un site, supprimez l’objet ordinateur inconnu restant en suivant les étapes de résolution, puis suivez les étapes de recréation des objets ordinateur inconnus en cas de suppression accidentelle.

Les objets ordinateur inconnus doivent être recréés automatiquement. Vous pouvez vérifier la progression de ce processus dans le fichier DDM. log sur le serveur du site principal.