[SCCM] L’installation des mises à jours peut se bloquer lors d’une séquence de tâche Windows 10

Bonjour à tous,

Microsoft vient de publier un correctif visant à corriger le blocage de l’installation de mises à jour lors de l’exécution d’une séquence de tâche Windows 10. Ce problème peut survenir à partir du moment où un grand nombre de mises à jour doit être installé (plus de 50).

Lorsque ce problème se produit, les processus CCMExec et TSInstallSWupdate semblent se bloquer. Le gestionnaire des tâches  affiche également un grand nombre de threads TSInstallSWupdate (environ 774) sont en cours d’utilisation.

Ce problème touche les versions suivantes de SCCM :

  • ConfigMgr 2012 SP2
  • ConfigMgr 2012 R2 SP1
  • ConfigMgr Current Branch (1602)

le correctif 3174008 est disponible à la page suivante : https://support.microsoft.com/en-us/kb/3174008

Enjoy 😉

 

Sauvegardez simplement vos pilotes avec cet outil

Bonjour à tous,

Après une bonne période de développement voici un petit utilitaire que je viens de développer et qui vous permet de sauvegarder rapidement les pilotes tiers utilisés sur un poste de travail. Cette sauvegarde peut ensuite être intégrée dans SCCM ou MDT ou tout autre dossier.

Vous retrouverez les binaires de cette application à la page suivante : Driver Management Tool. N’hésitez pas à noter cette contribution à cette même page 🙂 🙂

Lire la suite

[PowerShell] Tester si un périphérique est connecté

Bonjour à tous,

Voici une fonction qui vous permettra de tester si un périphérique est connecté sur un poste de travail.
Cette fonction retourne les caractéristiques du périphérique si il est trouvé, sinon elle ne renvoie rien.
Le critère de recherche est un ID plug’n’play ou une liste d’IDs plug’n’play compatibles avec ce périphérique.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
function Search-Device
{
    Param
    (
        [Parameter(Mandatory=$true,ValueFromPipeline=$false,Position=0)][String[]]$PnpIDs
    )
 
    $devices = $device = $FoundDevice = $null
 
    # On dresse la liste des pépriphériques connectés 
    $devices = Get-WmiObject -Class Win32_PnpEntity | Sort-Object -Property Caption
 
    # On cherche dans cette liste si un périphérique contient l'ID plug'n'play recherché
    foreach ($device in $devices)
    {
        # On construit la liste des IDs plug'n'play compatibles
        $CompatibleIDs = $null
        if ($device.HardwareID.Count -gt 0)
        {
            $CompatibleIDs = $device.HardwareID
        }
        if ($device.CompatibleID.Count -gt 0)
        {
            $CompatibleIDs += $device.CompatibleID
        }
 
        # On cherche l'ID plug'n'play parmi la liste 
        if ($CompatibleIDs -ne $null)
        {
            foreach ($PnpID in $PnpIDs)
            {
                if ($CompatibleIDs.Contains($PnpID) -eq $true)
                {
                    $FoundDevice = $device
                    break
                }
            }
        }
    }
 
    if ($FoundDevice -ne $null)
    {
        Write-host "Périphérique trouvé" -ForegroundColor Green
        Write-Output $FoundDevice
    }
    else 
    {
        Write-Host "Périphérique non trouvé" -ForegroundColor Yellow
        Write-Output $null
    }
}

Exemples d’utilisation :

1
$Device = Search-Device -PnpIDs @('PCI\VEN_8086&DEV_0166&REV_09','PCI\VEN_8086&CC_030000')

Enjoy 😉

[Windows] Modifier l’ordre des emplacements source des pilotes

Vous avez déjà pu constater que lors du branchement d’un nouveau périphérique la recherche d’un pilote compatible pouvait prendre un certain temps … et même un temps certain. Ce délai est dû au fait que le processus de recherche de pilote Windows tente d’abord de localiser un pilote à partir du site Windows Update avant de rechercher un pilote localement.

Depuis Windows 7, vous avez la possibilité de modifier cet ordre de recherche.

Cet article vous présente où et comment modifier ce paramètre.

Lire la suite

[MDT] Améliorer la séquence de tâches Replace

Bonjour à tous,

Lors d’un récent projet il m’ été demandé de mettre en œuvre une séquence de tâches permettant de réformer un poste. Réformer un poste consiste à nettoyer toute donnée encore présente mais aussi à faire en sorte que leur récupération soit très compliquée.

J’ai tout d’abord conseillé à mon client un marteau. ça ne coûte pas cher et c’est très efficace 🙂 … mais ça n’est pas très développement durable. Nous avons ensuite décidé d’implémenter une séquence de tâches de type « Standard Client Replace Task Sequence » qui inclut déjà une étape d’effacement des disques. Mais cette dernière action n’a pas fonctionné.

Après réflexion et quelques tests voici une solution que je vous propose

Lire la suite

[SCCM] Prés-requis à l’installation du client SCCM

Bonjour à tous,

Lors de l’installation d’une solution SCCM, la charge liée au déploiement de l’agent SCCM est certainement l’étape la moins simple à prévoir. Les raisons de cette difficulté peuvent être multiples :

  • Un parc réparti sur de nombreux sites
  • Un parc peu homogène
  • Des prés-requis au déploiement de l’agent SCCM non respectés

Pour ne rien arranger, les prés-requis dépendent des fonctionnalités que vous souhaitez déployer. Par conséquent, il n’existe pas une solution unique, cependant nous pouvons essayer de nous simplifier la vie en passant par exemple par les GPOs 🙂
Dans cet article vous propose de construire une GPO ayant pour objectifs d’appliquer à vos postes ces fameux prés-requis ainsi que quelques éléments supplémentaires qui pourront vous être bien utiles.

Lire la suite

[Windows 10] Obtenir la clé OEM stockée dans le BIOS

Bonjour à tous,

Voici une portion de code PowerShell vous permettant d’obtenir la clé OEM Windows de votre système. Cette fonction renvoie la clé si le BIOS contient une clé Windows sinon elle ne renvoie rien:

1
2
3
4
5
6
7
8
9
10
11
12
Function Get-OriginalProductKey
{
    $ProductKey = (Get-WmiObject -Class SoftwareLicensingService).OA3xOriginalProductKey
    if (-not [string]::IsNullOrEmpty($ProductKey))
    {
        Write-Output $ProductKey
    }
    else
    {
        Write-Output $null
    }
}

Plus globalement, la classe WMI SoftwareLicensingService expose les propriétés d’activation d’un produit ainsi que les méthodes et propriétés liées au Service d’activation (date de fin de grâce, méthode d’activation, etc.). Vous trouverez le détail de cette classe ici.

Dernière information, il semblerai que cette classe soit disponible à partir de Windows 7 / 2008 R2.

Enjoy 😉

[SCCM] Cumulative Update 3 pour SCCM 2012

Bonjour à tous,

Microsoft a publié depuis quelques jours la mise à jour Cumulative 3 pour SCCM 2012 R2 SP1 et SCCM 2012 SP2.

Au menu des corrections (liste non exhaustive) :

  • Des corrections apportées à la console SCCM permettant d’en améliorer la fiabilité
  • Des corrections apportées aux Séquences de tâches comme par exemple une correction sur l’installation d’applications basées sur une variable dynamique
  • De corrections apportées à la gestion des terminaux Mobiles (connecteur Exchange et Intune)
  • Des corrections de fiabilité pour les systèmes de site
  • La mise à jour des composants Endpoint

De plus, cette mise à jour corrige un bug apparut avec le kit de déploiement Windows 10 1511 empêchant le bon fonctionnement des images de démarrage. Suite à l’installation de cette mise à jour, pensez à mettre à jour vos images de démarrage pour finir le processus de correction.

Vous pourrez télécharger cette mise à jour ici.

Enjoy 😉

[PowerShell] Tester si le compte qui exécute le script est administrateur

Bonjour à tous,

Voici une portion de code intéressante qui vous permettra d’améliorer la qualité générale de vos scripts, particulièrement lorsque ces derniers nécessitent des droits d’administration être exécutés convenablement :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
try
{
    $User = [Security.Principal.WindowsIdentity]::GetCurrent()
    $Role = (New-Object Security.Principal.WindowsPrincipal $user).IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
    if(!$Role)
    {
        Throw "Le compte qui exécute ce script ne dispose pas de privilèges élevés"
    }
    Write-Host "Le compte dispose de privilèges élevés"
}
catch
{
    Write-Host $_.Exception.Message -ForegroundColor Red
}

Note : Ce test fonctionne dans toutes les langues.

Enjoy 😉

[SCCM] Gestion des BIOS dans SCCM 2012

Vous avez certainement remarqué que SCCM fournit un certain nombre de fonctionnalités telles que le Wake-On-Lan ou la gestion des volumes BitLocker. Ces fonctionnalités sont très pratiques : elles permettent de réaliser des actions comme par exemple planifier le démarrage des postes de travail pour appliquer une série de correctifs Windows en dehors de périodes d’utilisation. Cependant, en naviguant sur les différentes pages Technet, vous vous êtes aussi rendu compte que ces fonctionnalités ne sont accessibles qu’à partir du moment où le BIOS de vos postes de travail est configuré pour répondre aux prés-requis de ces fonctionnalités. Prenons l’exemple du légendaire Wake-On-LAN. Tant que le BIOS du poste de travail et le pilote Windows ne sont pas configurés pour autoriser ce protocole, impossible de le démarrer à distance.

Cet article vous présente comment d’une part intégrer à l’inventaire matériel SCCM l’énumération des paramètres BIOS des postes de travail. Dans un second article je m’attacherai à décrire comment organiser et réaliser une campagne de configuration des BIOS de vos machines d’entreprise. Pour l’illustrer, j’utiliserai comme exemple l’activation du Wake-On-Lan.

Vous serez ainsi en mesure d’intégrer à la gestion de vos postes de travail la composante BIOS 🙂

Lire la suite