Partager via


Le média dynamique ne peut pas obtenir d’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 média dynamique dans Configuration Manager ne peut pas obtenir d’emplacements de point de gestion lorsque l’Assistant Séquence de tâches s’exécute dans Microsoft Windows Preinstallation Environment (Windows PE).

Version du produit d’origine : Configuration Manager (current branch), Microsoft System Center 2012 R2 Configuration Manager
Numéro de base de connaissances d’origine : 4471115

Symptômes

Vous utilisez dynamic media dans Configuration Manager. Lorsque l’Assistant Séquence de tâches démarre d’abord dans Windows PE, la communication initiale au point de gestion pour synchroniser les paramètres de temps réussit, comme indiqué dans l’entrée SMSTS.log suivante :

TSMBootstrap Obtention d’informations sur l’heure mp
TSMBootstrap Set authenticator in transport
TSMBootstrap Demandant une identité cliente
TSMBootstrap Setting message signatures.
TSMBootstrap Définition de l’authentificateur.
TSMBootstrap CLibSMSMessageWinHttpTransport ::Send : URL :MP_ServerCCM_POST /ccm_system/request
La requête TSMBootstrap a réussi.

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

Adresse 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 : DTD est interdit.
<! 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)
Chargement d’erreurs TSMBootstrap à partir de XML
TSMBootstrap CCM ::SMSMessaging ::CLibSMSMPLocation ::RequestMPLocation a échoué ; 0x80004005
TSMBootstrap MPLocation.RequestMPLocation (szTrustedRootKey, sIPSubnets.c_str(), sIPAddresses.c_str(), httpS, HRESULT=80004005 (e :\cm1706_rtm\sms\framework\osdmessaging\libsmsmessaging.cpp,10164)
Échec de TSMBootstrap CCM ::SMSMessaging ::GetMPLocations ; 0x80004005
TSMBootstrap n’a pas pu interroger MP_Server pour l’emplacement MP

Note

Les adresses IP de la première ligne de cette entrée de journal sont les 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, le même échec se produit quel que soit le point de gestion avec lequel Configuration Manager 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 Internet Information Services (IIS) sur le point de gestion ne révèlent pas d’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 , le message d’erreur suivant s’affiche :

CALL_ISAPI_EXTENSION DllName="MP_Install_Directory\getauth.dll »
MODULE_SET_RESPONSE_ERROR_STATUS
Warning ModuleName="IsapiModule », Notification="EXECUTE_REQUEST_HANDLER », HttpStatus="500 », HttpReason="Internal Server Error », 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 Résolution des problèmes liés aux demandes ayant échoué à l’aide du suivi dans 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 requête enregistrée dans le SMSTS.log :

MP_GetAuth_ISAPI nombre de députés en disponibilité générale dans le site = <Number_Of_MPs_At_Site>
MP_GetAuth_ISAPI MP GA : Corps de réponse d’authentification réel :
<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() retourné 0x0
MP_GetAuth_ISAPI MP GA : HttpExtensionProc :GetAuthProcessRequest() retourné 1
MP_GetAuth_ISAPI MP GA : Chaîne de requête avant 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 requête 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.
MP_GetAuth_ISAPI chaîne mise en forme 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 d’une réponse 500 erreur de serveur interne
MP_GetAuth_ISAPI MP GA : GetAuthDoneWithSession : ServerSupportFunction() retourné 0x0
MP_GetAuth_ISAPI MP GA : HttpExtensionProc :GetAuthProcessRequest() retourné 4

Le problème ne se produit pas pour les supports basés sur le site ou l’environnement d’exécution de préboot (PXE) via Configuration Manager. Toutefois, le problème peut se produire si vous utilisez des solutions PXE tierces qui peuvent utiliser dynamic media.

Cause

Ce problème se produit parce qu’il existe plusieurs objets d’ordinateur inconnus pour un site web spécifique, et que ce site a plusieurs points de gestion. Cela entraîne le retour de nombreux résultats lorsqu’il MPLOCATION est appelé et que la GetMPLocationForIPSubnet procédure stockée s’exécute.

Pour s’exécuter GetMPLocationForIPSubnet manuellement sur le serveur exécutant 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 retourne plusieurs centaines de lignes. Ce grand nombre de lignes dépasse la taille maximale de la mémoire tampon. Cela provoque à son tour l’échec du message d’erreur 500.MPLOCATION

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é x64 Unknown Computer et un seul objet x86 étiqueté x86 Unknown Computer. Si un site possède plusieurs objets Unknown Computer par architecture, les objets d’ordinateur inconnu supplémentaires doivent être supprimés. La suppression d’objets ordinateur inconnus supplémentaires peut être effectuée uniquement à partir de la base de données SQL Server. Elle ne peut pas être effectuée à partir de la console Configuration Manager.

Note

La création d’objets Ordinateur inconnu supplémentaires pour empêcher les ordinateurs clients de voler le GUID des objets Ordinateur inconnu n’est pas la méthode appropriée pour résoudre ce problème. Pour obtenir la méthode correcte, consultez Un ordinateur client peut voler le GUID Configuration Manager d’un objet Ordinateur inconnu pendant l’imagerie.

Pour supprimer les objets d’ordinateur inconnu supplémentaires, procédez comme suit :

  1. Vérifiez que vous disposez d’une sauvegarde actuelle et valide du site Configuration Manager à l’aide de la tâche de maintenance de sauvegarde intégrée.

  2. Ouvrez la console Gestionnaire de configuration. S’il existe plusieurs sites principaux, nous vous recommandons d’ouvrir une console Configuration Manager connectée au site d’administration centrale.

  3. Dans la console Configuration Manager, accédez à Ressources et Regroupements d’appareils de conformité>>.

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

  5. Dans le volet de 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 x64 Unknown Computer ou x86 Unknown Computer pour un site individuel.

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

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

  9. Après avoir déterminé l’ID de ressource le plus bas, tous les autres objets x64 Unknown Computer ou x86 Unknown Computer pour n’importe quel site peuvent être supprimés. Notez tous les ID de ressource qui peuvent être supprimés et le site auquel ils appartiennent.

  10. Ouvrez SQL Server Management Studio, puis connectez-vous à la base de données du 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 Configuration Manager (généralement CM_Site_Code).

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

  13. Vérifiez que la base de données correcte est sélectionnée dans le menu déroulant à gauche du bouton Exécuter dans la barre d’outils.

  14. Dans le volet de 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 appartiennent tous les objets Unknown Computer. Utilisez cette requête pour déterminer les regroupements auxquels les objets Unknown Computer conservés doivent être ajoutés. Cela doit être basé sur les appartenances des objets Unknown Computer qui sont supprimés. L’ID de ressource est répertorié dans la colonne MachineID.

  15. Dans le volet de 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 est la suivante :

    SELECT * FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354','2046820355 ')
    
  16. Vérifiez que les enregistrements retourné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 de suppression est la suivante :

    DELETE FROM UnknownSystem_DISC WHERE ItemKey IN ('2046820354', '2046820355')
    
  17. Attendez quelques minutes, revenez à la console Configuration Manager, puis accédez aux regroupements d’appareils De présentation>des ressources et de la conformité.>

  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 x 64 Unknown Computer ou objet x86 Unknown Computer existe pour chaque site.

  20. Répétez les étapes 10-19 pour tous les sites principaux supplémentaires, si nécessaire.

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

Pour quelque raison que ce soit, 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 ne doivent être effectuées que s’il n’existe aucun objet Ordinateur inconnu pour un site. Si seul l’un des deux objets Ordinateur inconnu existe sur un site, supprimez l’un d’eux en suivant les étapes de résolution, puis suivez les étapes décrites dans Recréer des objets Ordinateur inconnus en cas de suppression accidentelle.

Les objets Unknown Computer doivent être automatiquement recréé prochainement. Vous pouvez vérifier la progression de ce processus dans le DDM.log sur le serveur de site principal.