Sommaire
ToggleDans cet article, je vais vous expliquer comment mettre vos Task Sequence (MDT, SCCM) en pause à la volée à l’aide d’une variable.
Il sera alors possible de mettre une TS en pause quand on le souhaite et autant de fois que l’on veut sans avoir à ajouter un step dans sa TS.
Contexte
Vous souhaitez tester quelque chose pendant un déploiement ou voir la valeur de certaines variables, voir des logs…
Pour cela vous souhaitez pouvoir mettre en pause votre Task Sequence.
Vous ne voulez pas mettre en pause la TS uniquement à un moment donné mais quand vous voulez.
Vous souhaitez pouvoir mettre en pause votre TS en appuyant par exemple sur la touche F4 (ou autre).
La méthode existante
Il existe de nombreux posts relatifs sur « Comment mettre en pause une TS ».
Ci-dessous quelque uns de ces articles:
- SCCM Pause a Task Sequence
- Pause a TS with no package
- Pause a TS (Windows noob)
- Pausing a TS, a bit different
Dans tous ces articles la méthode utilisée est de créer un step dans la TS pour afficher un msgbox, ce qui signifie que la pause sera effective uniquement au moment de la réalisation du step concerné.
Si vous souhaitez à nouveau mettre en pause votre TS, il faudra arrêter le déploiement, ajouter un nouveau step et recommencer le déploiement.
La nouvelle méthode
Avec cette nouvelle méthode, plus besoin d’ajouter un step dans votre TS.
Il sera possible de mettre en pause une TS dynamiquement, autant de fois que vous le souhaitez, sans toucher à la TS.
Comment cela fonctionne ?
Pour cela j’ai procédé tel que ci-dessous:
- Pour pouvoir mettre en pause la TS dynamiquement, modifiez le fichier ztiutility.vbs
- Ajoutez une nouvelle variable TSPause
- Si cette variable à comme valeur TRUE, alors on affiche un msgbox
- Ce msgbox permettra de mettre en pause la TS
- Une fois que l’on clique sur le bouton OK du msgbox, la TS reprend et la variable TSPause aura à nouveau comme valeur FALSE
Comment l’implémenter ?
- Ouvrez le fichier ztiutility.vbs
- Cherchez la fonction Public Function ReportProgress. J’ai choisi cette fonction car elle est utilisée durant tout le déploiement.
- Ajoutez le code ci-dessous en dessous de la partie : Dim uMaxStep
Dim TS_Pause_Status
If oEnvironment.Item("TSPause") = "TRUE" Then
TS_Pause_Status = MsgBox ("Click on OK to continue the TS", vbOkOnly + vbQuestion, "TS in pause")
If TS_Pause_Status = vbOK Then
oEnvironment.Item("TSPause") = "FALSE"
End if
End If - Mettez à jour votre deployment share
Pause dynamique en action
Dans l’exemple suivant je procède tel que ci-dessous:
- Créer l’objet PowerShell TS
$TSEnv = New-Object -comobject Microsoft.SMS.TSEnvironment
- Attribuer la valeur TRUE à la variable TSPause
$TSEnv.Value("TSPause") = "TRUE"
- Un msgbox sera affiché
Ci-dessous l’exemple en action :
Dans l’exemple suivant, j’ai ajouté un bouton Pause dans mon outil TS Debugger for MDT.
Pour plus d’infos sur cet outil, voir ce lien.
Le UserVoice
Il y a 3 ans, j’avais créé un article sur comment ajouter le pourcentage de progression complet dans la barre de progression de la TS.
J’ai également créé un UserVoice afin que cela soit implémenté dans une des prochaines versions de SCCM.
Celui-ci a été récemment accepté et cet ajout sera prochainement implémenté, voir ici.
C’est pourquoi j’ai créé un autre UserVoice afin d’ajouter la pause dynamique via une variable dans SCCM.
Cliquez ici pour voter pour cet ajout.