PI Services

Le blog des collaborateurs de PI Services

MECM (SCCM) : Script de maintenance WSUS pour changer wsyncmgr purge des mises à jour expirées de 7 jours à 0 jour

Microsoft Endpoint Configuration Manager est capable de supprimer automatiquement le contenu des mises à jour logicielles des points de distribution lorsque ce contenu est lié à des mises à jour expirées. Ce processus permet de gérer l'espace disque sur vos points de distribution en supprimant tout contenu dont vous n'avez plus besoin.

Si celles-ci ne se trouvent dans aucun groupe de mises à jour logicielles, ConfigMgr purgera automatiquement les mises à jour expirées après 7 jours. Vous pouvez modifier le nettoyage à 0 jour si vous souhaitez que les composants wsyncmgr suppriment immédiatement les mises à jour expirées (en supposant qu'ils ne soient pas dans un groupe de mises à jour logicielles). On appelle ce nombre de jours, âge de nettoyage des mises à jour (Updates Cleanup Age)

Ci-dessous un script VBS qui permet de changer la valeur de l'âge de nettoyage des mises à jour sur votre ConfigMgr :

On Error Resume Next

'***  Define string variables for device, device Resource ID and user of interest

Class_Name = 		"SMS_SCI_Component"
Class_ItemName =	"SMS_WSUS_SYNC_MANAGER|<<<***CHANGEME***SCCMSERVERNAMEHERE>>>.YOURDOMAIN.COM"
Class_ItemType =	"Component"
Property_Name = 	"Updates Cleanup Age"
Property_SiteCode = 	"*****SCCMSITECODEHERE*****"
DesiredValue =		0

'***  Check parameters - we need the provider server name and the site code

set args=wscript.arguments

If args.Count = 2 then
	SMSProviderServer = UCASE(Wscript.Arguments(0))
	SiteCode = UCASE(Wscript.Arguments(1))
Else
	wscript.Echo "Incorrect command line arguments." & vbCrLf & "Usage: cscript /nologo ModifySCFProperty.vbs <smsproviderserver> <sitecode>" & vbCrLf & "Example: cscript /nologo ModifySCFProperty.vbs SERVER1 S01 > schedules.txt" & vbCrLf
	WScript.Quit(1)
End If


'***  Connect to the provider - report the error and terminate on failure

SMSProviderServer = "\\" + SMSProviderServer + "\"
Set ObjSvc = GetObject("winmgmts:" & "{impersonationLevel=Impersonate,authenticationLevel=Pkt}!" & SMSProviderServer & "root\sms\site_" & SiteCode)

If Err.Number <> 0 Then
	wscript.Echo "Failed to connect to provider server with code: " & Err.Number & ".  Aborting!"
	WScript.Quit(2)
End If

'***  Get the desired instance of the class

Set objInst = ObjSvc.Get(Class_Name & ".ItemName='" & Class_ItemName & "',ItemType='" & Class_ItemType & "',SiteCode='" & Property_SiteCode &"'")

If Err.Number <> 0 Then
	WScript.Echo "Failed to open desired object with error code " & Err.Number & " (" & Err.Description & ").  Aborting!"
	WScript.Quit(3)
End If

'***  Loop through the Properties until we find a match or run out

bFoundProperty = False

For Each objProp in objInst.Props
	If objProp.PropertyName = Property_Name Then
		bFoundProperty = True
		Exit For
	End If
Next

If bFoundProperty = False Then
	WScript.Echo "Desired object was found but property was not found.  Exiting without making any changes."
	WScript.Quit(4)
End If	

'***  Property found so check to see if existing value matches desired, changing it as appropriate

If objProp.Value = DesiredValue Then
	WScript.Echo "Property '" & Property_Name & "' found with desired value '" & DesiredValue & "'.  Not making any changes."
	WScript.Quit(0)
Else
	OriginalValue = objProp.Value
	objProp.Value = DesiredValue
	objProp.Put_
	objInst.Put_

	If Err.Number <> 0 Then
		wscript.Echo "Failed to save the desired change with code: " & Err.Number & ".  Aborting!"
		WScript.Quit(5)
	Else
		WScript.Echo "Property '" & Property_Name & "' successfully changed from '" & OriginalValue & "' to '" & DesiredValue & "'."
	End If
End If

 

Sources:

https://docs.microsoft.com/en-us/troubleshoot/mem/configmgr/software-update-maintenance

https://www.reddit.com/r/SCCM/comments/ab7v6f/software_updates_remove_old_ones/

https://youtu.be/wqBaTp855sk?t=1765

https://setupconfigmgr.com/wp-content/uploads/2018/06/Adjust-WSync_UpdateCleanupAge.zip

MECM (SCCM) : Code d'erreur de séquences de tâches 0X80091007

Lors du déploiement du Master sur un ordinateur portable, la séquence de tâches SCCM a échoué avec le code d’erreur 0X80091007.

Cette séquence de tâches fonctionnait bien, mais cette erreur s’est produite sans aucune explication.

En regardant le fichier log "smsts.log" de la machine en question, il y a une ligne qui dit clairement que la séquence de tâche a échoué lors de l’installation de Microsoft Office 2013. Cependant, le package Office n'était pas corrompu. Ce problème avait donc une autre solution que la recréation du package.

Après une investigation plus approfondie du fichier log, il a révélé les erreurs ci-dessous :

Failed to run the action: Error in the task sequence.
Task Sequence Error Running: Install Microsoft Office 2013 Professional.
Install Microsoft Office 2013 Professional has failed with the error code (0x80091007).
The hash value is not correct. (Error: 80091007; Source: Windows)
For more information, please contact your system administrator or help-desk operator.

DownloadContentAndVerifyHash() failed. 80091007

En cherchant sur internet, le code d'erreur 0X80091007 se traduit par Hash Mismatch (The hash value is not correct).

Conclusion:

Il n’y avait pas de solution unique à cette erreur. Si vous rencontrez également le code d’erreur de séquence de tâches SCCM 0X80091007, essayez les solutions ci-dessous :

  • Supprimez le package du point de distribution et re-distribuez-le. C’est juste pour être sûr qu’un package valide est disponible avec le point de distribution
  • Vérifiez si la mémoire RAM installée est défaillante. Cette solution semble être la plus stupide. Mais, le remplacement de barrette RAM a résolu ce problème dans notre scénario.
  • Certaines personnes ont résolu l’erreur d’incompatibilité de hachage en désactivant la réplication différentielle binaire et en redistribuant le package à DP.

 

Dans notre scénario, problème détecté :

Barrette mémoire ram amovible défaillante. Elle est la source d’un problème de vérification de hash lors du téléchargement des sources de la séquence de tâches depuis MECM (DownloadContentAndVerifyHash() failed. 80091007)

Solution :

Enlever la barrette ram amovible et la remplacer par une nouvelle.

SCCM 2012 R2 – Astuce packaging d’application

Cet article expose une astuce qui est susceptible de vous faire gagner du temps dans les phases de packaging de vos applications.

Contexte

Après quelques expériences en packaging sur ConfigMgr 12, on s’aperçoit très vite que le temps nécessaire traiter une application est extrêmement variable d’une application à l’autre. Néanmoins, je ne pense pas me tromper en disant que la tâche est simplifiée dans le cas où le fichier d’installation se présente sous la forme d’un « Windows Installer MSI ». En effet, Configuration Manager prend en charge plus facilement et détecte de nombreuses informations sur votre application. Voici par exemple quelques éléments qui sont automatiquement ajoutés :

· Informations générales (nom de l’application, version, build, éditeur…)

· La ligne de commande d’installation

· La ligne de commande de désinstallation

· Les paramètres de détection

Notez que certaines informations sont valables pour l’application, mais aussi pour le Type de déploiement Windows Installer qui est lui aussi automatiquement généré. On évite ainsi la double saisie des informations.

Remarque : Rien ne vous empêche par la suite de modifier les champs préremplis, je pense notamment aux champs d’installation et désinstallation pour greffer un éventuel script personnalisé.

Un fichier MSI étant généralement plus rapide à mettre en œuvre qu’un fichier EXE, voyons à présent une astuce pour tenter d’obtenir un fichier MSI à partir d’un EXE.

Comment obtenir un fichier MSI à partir d’un fichier EXE ?

Les éditeurs mettent généralement à disposition des fichiers d’installation parfois en fichier EXE, MSI ou EXE + MSI. Dans le cas où le MSI n’est pas disponible, voici une astuce pour tenter d’obtenir le fichier. La méthode présentée ne fonctionne pas à tous les coups, mais elle est si rapide à mettre en œuvre qu’il serait dommage de ne pas essayer.

Situation type : vous devrez ajouter une application dont la source d’installation est un fichier portant l’extension .EXE.

1. Lancer le fichier d’installation et au besoin avec une élévation avec un compte disposant des droits suffisants

2. L’installer se charge et affiche une première fenêtre de bienvenue.

3. À cet instant, rendez-vous dans le répertoire C:\Users\Votre_User\AppData\Local\Temp

Attention, il s’agit ici du compte avec lequel vous avez réalisé l’élévation de droit.

4. Le répertoire est susceptible d’être assez conséquent. Trier donc les éléments par date et rechercher un répertoire ou des fichiers MSI qui correspondent à l’heure de l’exécution du fichier.

5. Vous avez identifié un répertoire / fichier ? Vérifier qu’il s’agit bien de l’application recherchée. Notez qu’il est très fréquent que les éditeurs de logiciel encapsulent dans les fichiers EXE un premier exécutable en 32 Bits et un second en 64 Bits.

6. Si vous ne trouvez aucun fichier, c’est que le programme d’installation n’a pas réalisé d’extraction dans ce répertoire. Vous pouvez essayer de regarder également dans le répertoire : C:\Windows\Temp

Remarque : dans le cas où l’installation devra être réalisée avec des options d’installation spécifique, il faudra vérifier que le fichier MSI extrait peut réaliser une installation conforme et similaire au fichier EXE.

SCCM 2012 R2 – Déplacement du répertoire contenant les fichiers d’installations de vos applications

Contexte

Votre infrastructure System Center Configuration Manager est en production depuis plusieurs mois. La liste des applications disponibles devient de plus en plus grande et votre espace de stockage libre devient faible et atteindra bientôt un seuil critique. Vous envisagez probablement d’orchestrer une vaste opération de déplacement du répertoire contenant les sources d’installations de vos applications. C’est ce sujet que je vous propose d’aborder dans cet article à travers un retour d’expérience.

Détail des opérations

Une première étape préliminaire consiste à copier le répertoire « Sources » vers votre nouvel espace de stockage. Que ce soit un partage simple ou un espace de nom DFS je ne détaillerai pas davantage cette étape. Les données étant maintenant physiquement prêtes sur le nouvel espace cible, nous pouvons passer à la seconde étape.

L’opération suivante consiste à modifier dans ConfigMgr l’emplacement pour accéder aux fichiers d’installation. Elle pourra être menée par deux méthodes:

· La première consiste à utiliser l’interface graphique. Aucune opération en amont n'est à prévoir. Cependant, cette tâche répétitive s'accentue fortement au fur et à mesure que le nombre d’applications tend à croître.

· La seconde s’appuie sur l’exécution d’un script qui réalisera la migration en masse et de façon automatisée.

Voyons à présent les détails des actions à mener pour réaliser cette tâche

En graphique

Rien de plus simple: sélectionner votre application dans votre « Bibliothèque de logiciel », accéder aux propriétés du « type de déploiement » et repérer le champ « Emplacement du contenu ». Saisir l’UNC ou cliquer sur « Parcourir » pour renseigner le nouveau chemin. Validez ensuite le changement en cliquant sur « OK » ou « Appliquer » et le tour est joué.

En PowerShell

Un script PowerShell pourra être mis en place pour traiter l’opération de façon automatisée. Le choix d’implémenter cette méthode repose principalement sur le nombre d’applications à traiter. Un temps de préparation supplémentaire pour mettre en œuvre le script est à prévoir. C’est pourquoi vous devriez probablement privilégier cette méthode si le nombre d’applications est un multiple de cinquante ou plus.

Je ne peux rentrer dans les détails sur les opérations à mener dans le cadre de ce blog mais plusieurs articles sur le Web traitent le sujet et détaillent le script à mettre en œuvre. Vous pouvez donc vous en inspirer et l’adapter en fonction de votre besoin. Voir la section Ressources externes en bas de la page.

Impacts

Cette section porte sur une analyse des impacts potentiels sur vos servers et postes client.

Impact infrastructure ConfigMgr

Les applications modifiées seront dotées d’un nouveau numéro de révision. Une nouvelle copie du répertoire contenant la source sera donc envoyée sur les points de distribution. Un temps de propagation sera donc nécessaire pour distribuer le nouveau contenu. En cas de problème, vous pourrez envisager une opération de « Roll Back » par l'application de la révision précédente.

Impact des postes clients

Du côté des postes client et de leurs « Centre logiciel », cela se traduira par une actualisation des applications :

- Si l’application est déjà installée sur le poste, elle apparaitra de nouveau dans l’onglet « État de l’installation » comme étant « Installée ».

- Si l’application est obligatoire et qu’elle n’était pas installée sur le poste, l’agent lancer la phase d’installation.

- Si l’application est dans un état « Échec », l’agent va tenter d’installer l’application une nouvelle fois. N’ayant pas modifié le processus d’installation, il n’y a pas d’illusion à se faire sur l’issu de l’installation.

Pour conclure, il y a donc peu de risque à réaliser cette opération sur votre environnement

Ressources externes

Voici quelques liens qui traitent le sujet de la migration par script Powershell.

http://blogs.technet.com/b/configmgrdogs/archive/2013/05/09/package-amp-application-source-modification-scripts.aspx

http://www.verboon.info/2013/05/how-to-change-the-sccm-2012-package-source-path-with-powershell/

https://andrewdcraig.wordpress.com/2013/01/31/configmgr-2012-change-application-source-path/

SMS/SCCM - Visualiser une infrastructure SMS / SCCM avec l'outil SMSMAP

Descriptif :

SMSMap est une application écrite en VB .Net utilisant les librairies du SDK de SCCM pour générer à travers MS Visio le diagramme de votre infrastructure SCCM.

Très utile lors d’un audit ou lorsque les documentations d’architecture ne sont pas disponibles !

Il permet d’afficher (options paramétrables) :

  • Les sites SCCM par type (primaire/secondaire)
  • Les systèmes de sites présents dans ces sites (SQL, point de gestion, déploiement etc..)
  • Les relations inter-site et hiérarchie.
  • Le nombre de clients par sites

Le seul pré-requis est de posséder MS Visio 2003 ou 2007 sur l’ordinateur où il sera installé.

Le fichier obtenu peut être sauvegardé sous un format pdf, jpeg ou autre.

Un exemple :

Options de paramétrage de l’outil :

smsmap01 

smsmap02

Diagramme obtenu pour un environnement de tests :

smsmap03 

Télécharger l’outil :

Vouc pouvez télécharger cet outil gratuitement à l'adresse suivante :

http://www.tondtware.com/

SCCM - Présentation des nouveautés de ConfigMgr 2007 R3 et ConfigMgr 2011

Je reprends ici des informations glanées sur divers blogs concernant les évolutions futures présentées au TechEd de Berlin (Nov 2009) concernant SCCM 2007 R3 et la nouvelle version (anciennement appelée vNext) SCCM 2011.

SCCM 2007 R3 :

  • Améliorations liées à la gestion de l’énergie : 
       - Application de modèles de gestion d’énergie sur les machines via les collections (à la manière des fenêtres de maintenance) 
       - Reporting de la consommation énergétique en fonction des modèles appliqués 
       - Mesures de « l’activité » de l’utilisateur
  • Améliorations des performances 
       - Découvertes AD plus rapides 
       - Mises à jour des collections plus rapides (détection des nouvelles ressources)
  • OSD : possibilité de créer des images OEM

SCCM 2011 :

  • Le produit sera « User Centric ». Ce qui signifie que les applications se déplacent avec les utilisateurs où qu’ils soient
  • Les packages seront remplacés par des applications
  • Les méthodes de déploiement des applications seront liées à des règles de détection : en fonction de l’endroit où l’utilisateur se trouve, de la machine sur laquelle il se connecte, l’application pourra être installée, virtuelle (streaming) ou en remote desktop.
  • Il sera possible d’assigner une machine "principale" à un utilisateur (à utiliser avec les règles de détection par exemple)
  • Au niveau architecture, il y aura moins de niveaux dans la hiérarchie. Le site central sera remplacé par un Client Administrative Server (CAS) et un seul niveau en dessous
  • Les sites seront ajoutés au fur et à mesure pour des raisons de montée en charge (“scalabilité”) et non plus des raisons de délégation d’administration
  • La réplication SQL remplacera les mécanismes de réplication de fichiers pour les réplications entre sites (à l’exception des binaires)
  • Les DP auront des “senders”(donc contrôlables)
  • Les sites secondaires auront une base de données, un MP et un DP par défaut
  • DCM pourra faire de l’auto correction
  • Le reporting classique de SMS disparait. Il n’y aura plus que SSRS (Reporting Services)
  • La console SCCM ne sera plus à base de MMC classique mais plutôt genre SCOM. Dans la ligne des autres produits System Center
  • ConfigMgr 2011 sera 64 bits 

Quelques liens supplémentaires :

http://thoughtsonopsmgr.blogspot.com/2009/11/tech-ed-berlin-2009-day-3-wednesday.html

http://blogs.technet.com/systemcenter/archive/2009/09/08/announcing-system-center-configuration-manager-2007-r3.aspx