lundi 16 décembre 2013

MDT 2013 :[BugFix] Des applications sont manquantes lors de la création d’un Média !


4aa44b70189d918b


Le Problème :


Vous souhaitez exporter votre Deployement Share vers un média amovible, et avez crée à cet effet un profile qui contient toutes les applications nécessaires à la bonne installation de votre PC !

Cependant, une fois l’ISO crée, vous vous rendez compte qu’il vous manque des applications alors qu’elles font bien partie de votre profile…


Pourquoi :


Une recherche sur google nous apprend (grâce à NDR00) que ce comportement est lié au fait que le champ source de votre application est : soit  vide, soit diffèrent du chemin réel de votre application…

2013-12-16_01h25_19
Si vous pensiez régler le problème en modifiant manuellement le champ… pas de chance, il est grisé !!!

Il va donc falloir supprimer et réimporter toutes vos applications… ou utiliser PowerShell !!..


La solution :


Toutes les informations concernant les applications figurent dans Le  fichier ..Deploy\Control\Applications.xml.

Le chemin de chaque application est référencé grâce aux balises <WorkingDirectory> :

2013-12-16_12h18_38

I’idée est de créer des balises <Sources> pour les applications qui n’en disposent pas et de toutes les remplir avec le chemin indiqué par les balises <WorkingDirectory>

Et pour cela, rien de plus évident que PowerShell :

#//—————————————————————————-
#//  This script by Diagg/Zany & OpenEyes.
#//   http://www.zany-openeyes.blogspot.com/
#//   http://www.osd-couture.com/
#// 
#//  Version : 0.2
#//  Release Date : 15/12/2013
#//  Latest Update : 16/12/2013
#//  Usage : 
#//  Warning :
#//—————————————————————————-

cls

#Path of the file to fix (should Be application.xml)
$AppXML = "D:\MDT-Sysprep\Deploy\Control\Applications.xml"

if (Test-Path -LiteralPath $AppXML)
 {
  [xml]$XmlFile = Get-Content -LiteralPath $AppXML
  $i = 1
  
  foreach($item in $XmlFile.applications.application)
   {
    Write-host "Item $i Source : $($item.Source)"
    Write-host "Item $i Working Directory : $($item.WorkingDirectory)" 
    
    If (-not($Item.WorkingDirectory -eq $null))
     {
       If ($Item.Source -eq $null)
       {
        $NewItem = $XmlFile.CreateElement("Source")
        $NewItem.Innertext = $Item.WorkingDirectory
        [Void]$Item.AppendChild($NewItem)
       }
      Else
       {
        $Item.Source = $Item.WorkingDirectory  
       }
      Write-host "New Item $i Source :  $($Item.source)"
     }
    Else
     {
      Write-host "Item $i doesn't need to be updated !" 
     }
    $i++
    Write-Host "`n"
   }
  $XmlFile.Save($AppXML)
 }   

Grace à ce script, les balises manquantes sont crées et le contenu de <WorkingDirectory> est systématiquement recopié dans les balises <Sources>.

2013-12-16_12h56_38

Avant d'utiliser le script, pensez  à modifier la ligne 16 afin d’y spécifier le chemin de votre DeploymentShare.

Suite à cela, il ne vous reste plus qu’à mettre de nouveau à jour votre média de déploiement. Et pour l’avenir, ayez comme bonne pratique de lancer le script avant toute création de nouveau média.

lundi 4 novembre 2013

MDT 2012/2013 : Gérez les images de plus de 4 GO en USB UEFI

Abstract_II_Typol_2_0_by_paradoxchild

Le sujet est sur la table depuis plus d’un an… je l’avais déjà évoqué dans mon billet sur l’ UEFI, pourtant du côté de Microsoft, aucune solution n’est en vue. Officiellement , il à été décidé que le bug ne serait pas fixé avant la prochaine version d'MDT… Donc, tenez vous le pour dit :

Si vous souhaitiez installer Windows 7 ou 8.1 à partir d’une clé USB sur un PC en UEFI et que votre image WIM fait plus de 4 GO (elle ne peux donc plus tenir sur votre clé formatée en FAT32 qui ne supporte pas une telle taille de fichier)… patientez jusqu’a l’année prochaine… ou lisez la suite de ce billet…

 

Prérequis :

  • MDT 2012 U1 ou MDT 2013.
  • Un média amovible  supportant le boot en UEFI (donc formaté en FAT32).
  • Une image WIM de votre OS de plus de 4Go (un sysprep d’un Windows 8.1 x64 avec Office 2013, .Net 3.5 et Java est suffisant pour dépasser cette taille)
  • L’ outils  MDT Slasher est le script LTIApply.wsf à télécharger ici.
  • Si vous n’êtes pas sous Windows 8.1 vous aurez également besoin de Powershell 4 

 

 

Installation :

Remplacez le script LTIApply.wsf situé dans le répertoire scripts de votre Deployment Share par celui fourni avec l’archive. c’est tout ce qu’il y’a à faire pour la partie MDT.

changer la politique d’exécution des scripts powershell en ouvrant une console Powershell avec droit d’admin et en tapant :

set-executionpolicy -ExecutionPolicy Unrestricted

 

Utilisation :

Lancez MDT-Slasher.ps1. Ce script-application va vous permettre d’importer des images WIM de plus de 4 Go dans MDT en les découpant en parties plus petites. Il permet également de découper des images qui feraient déjà partie d’un Deployment Share qui se trouverai sur un partage réseau.

2013-11-01_19h31_54

Afin de pouvoir travailler, indiquez tout d’abord à MDT slasher l’emplacement de votre Deployment Share :

2013-11-01_19h35_22

Vous pourrez alors choisir parmi les images du Deployment Share celle qui a besoin d’être découpée :

2013-11-01_19h55_42

Si l’image que vous souhaitez découper ne fait pas partie de celle apparaissant dans la listbox, spécifiez directement le chemin de votre image WIM ainsi qu’un nom de répertoire à créer pour l’importation dans la partie de l’interface se trouvant juste en dessous :

2013-11-01_19h37_52

Une fois l’image choisie, appuyiez sur le bouton Split pour démarrer l’opération.

2013-11-03_08h41_24_thumb[1]

Lorsque l’import est terminé, vous pouvez ouvrir MDT afin de vérifier que votre image a bien été ajouté au répertoire Operating System :

image

Enfin, une verification du Deployment Share permettra  de constater que l’image WIM à bien été découpée et que les parties SWM sont également bien présentes :

2013-11-01_20h07_54

Voila, Tout est prêt. Votre image a été découpée, importée et son nouveau format est entièrement pris en charge par MDT. Vous pouvez maintenant utiliser ces images dans n’importe quelle Task Sequence en toute tranquillité.

 

Behind The Scene :

Quelques explications sur le “comment ça marche” : DISM permet de découper les images WIM, mais il sait aussi appliquer ces images découpées. MDT sait importer le premier tronçon de ces images découpées pourvu qu’il ait une extension en .WIM. (les autres parties en .SWM doivent être copiés à la main). Pour le reste, toute la magie réside dans  la modification (moins de 10 lignes) du script LTIApply.wsf en permettant à celui-ci d’utiliser DISM à la place d’ImageX lorsqu’il doit traiter des images SWM !

Phew… Simply state of the art !!!…

lundi 29 juillet 2013

MDT 2012/2013 : Bloquez L’exécution des GPO.

flinsectoid

Ce cas va forcement vous arriver : vous devez déployer une machine qui va intégrer un domaine tout en retardant l’application des GPO afin de ne pas compromettre votre déploiement !!...

La solution (inspirée par Steven Yarnot, merci à lui !) consiste à désactiver le service GpSvc (Group Policy Service) le temps de l’installation et à le réactiver à la fin de celle-ci. Comme ce service ne peut pas être désactivé même avec des droits d’admin, nous allons nous aider de PsExec afin d’obtenir des privilèges système.

Prérequis

 

Installation

Copiez PsExec dans les répertoires ..\Tools\x86 et ..\Tools\x64 de votre DeploymentShare.

Puis dans MDT ouvrez votre Task Sequence et ajoutez le script ZTIGPOBlocker.wsf juste après l’étape Gather local only dans la section State Restore.

La commande à saisir est Cscript.exe "%SCRIPTROOT%\ZTIGPOBlocker.wsf" /on

image

Nous allons également ajouter l’étape de réactivation des GPO en fin de déploiement : Toujours dans la section State Restore juste après l’étape Apply Local GPO Package ajoutez la commande  Cscript.exe "%SCRIPTROOT%\ZTIGPOBlocker.wsf" /off comme décrit sur l’image ci-dessous :

image

Votre bloqueur de GPO est prêt !

Note : Durant le déploiement, si le script fonctionne correctement, vous serez “poppé” par un message système non bloquant vous rappelant que les GPO ne peuvent pas s’appliquer:

NoGPO-2013-07-16_14h58_07

mardi 9 juillet 2013

MDT 2012/2013 : Installez des composants Active Setup

453692818_f75f24bd32_z

Active setup, vous connaissez ? Cette fonctionnalité fait partie de la technologie de package MSI et permet d’installer des applications en “contexte utilisateur”. Dit comme ça, cela  peut faire rêver, mais ne vous y trompez pas, vous n’installerez que des composants qui ne requièrent aucun droit  d’administration. Pour faire cour : pas de modification de la basse de registre sur la partie HKLM, pas de DISM, pas d’écriture dans %ProgramFile% ou dans %WinDir%, pas de script Powershell, bref uniquement des choses qui s’exécutent sans droits d’admin. (tout les détails ici).

Quand j’aurai ajouté qu’il s’agit d’un work arround hautement déconseillé et que vous devez lui préférer les GPO de domaine, vous vous demanderez surement quel est l’intérêt d’utiliser cette ‘flute’ !!!

La réponse est simple : il y a des cas ou vous ne pourrez pas faire autrement ! Donc si vous avez besoin de cette technologie pour un déploiement MDT, voici comment procéder :

Installation

Pour ajouter cette fonctionnalité dans MDT, téléchargez le script OEMCopy de Michael Niehaus ainsi que mon script ZTIPopulateActiveSetup.wsf

Copiez les deux scripts dans le répertoire Scripts de votre Deployment Share.

Dans votre Task Sequence ajoutez une commande(Add>General>New command Line) juste après la tâche Install Operating System (section Install) et ajoutez la commande cscript.exe "%SCRIPTROOT%\CopyOEM.wsf"  comme décrit sur cette capture :

2013-03-27_07h33_36

Ajoutez une deuxième commande dans la sous section Custom Tasks et saisissez la commande cscript.exe "%SCRIPTROOT%\ZTIPopulateActiveSetup.wsf"

image

Il ne vous reste plus qu’à copier vos éléments à exécuter en contexte utilisateur (et au risque de me répéter, cela veut dire : rien qui ne fasse crier l’UAC !) en les mettant dans le répertoire $OEM$ qui se trouve dans votre Deployment Share :

Créez-y une arborescence de répertoire comme suit : $OEM$\ProgrammData\Active-Setup et mettez y les types de fichiers suivants :

.hta, .exe, .reg, .cmd, .bat
.wsf, .vbs, .js (les scripts s’exécutent par défaut avec Cscript, ajoutez un “W” majuscule à la fin du nom du fichier pour qu’ils s’exécutent avec Wscript).

vous pouvez contrôler ce qui à été crée après Déploiement en vérifiant la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components toutes les nouvelles entrées commencent par ZTIMDT :

Capture

jeudi 13 juin 2013

Google Reader : Comment sauvegarder vos tags avant le 1er Juillet !!!!

Reflections_by_ardcor

Google qui d’habitude “est ton amis…” a décidé de fermer son service de Flux RSS Google Reader le 1er Juillet ! Comme vous tous, cela m’ennuie énormément car je l’utilisais massivement pour faire ma veille technologique (350 Flux et 120 tags). En sauvegardant mes datas via leur service Google TakeOut, je découvre avec horreur que  les tags ; qui m’ont permis de classer/archiver des milliers de trouvailles durant les 5 dernières années ne sont  pas récupérés…Qu’a cela ne tienne, je vous propose de remédier à ce problème grâce à l’aide d’un petit script en PowerShell…  suivez le guide :

1 – Rendez vos tags publique

La première étape consiste à vous connecter à Google Reader puis dans les settings, sur l’onglet “Folders and Tags”, de rendre tous vos tags publique. Ils seront alors accessibles sans authentification, mais également disponible sous forme de flux Rss complets que nous pourrons télécharger.

Cliquez donc sur l’icône Flux RSS de tout vos tags pour les rendre publique:image

2 – Récupérez la liste des tags

Là, on ne va pas faire dans la dentelle : Avec votre sourie, vous allez sélectionner tous les tags de votre page, image

puis faites un CTRL+C pour les copier. Ouvrez ensuite notepad++ et collez-y le contenu copié en tapant CTRL+V. Vous avez normalement obtenu un fichier assez confus qu’il va falloir nettoyer !

image

C’est heureusement assez simple grâce à l’outil de remplacement de notepade++ (CTRL+H) qui vous permet de remplacer rapidement  toutes les occurrences d’une chaine de caractères par du vide !

En 3 coups de CTRL+H et de quelques éditions manuelles, j’ai obtenu un fichier ne contenant plus que mes tags et qui ressemble à cela :

image

Une fois que vous aurez le votre, sauvez le sous le nom MyGoogleTags.txt dans le répertoire C:\Temps que vous aurez crée au préalable.

3 – Récupérez votre ID utilisateur

Il s’agit d’une suite de 20 chiffres que vous pouvez retrouver en cliquant sur le lien “View public page “ de l’un de vos tag. La page qui s’ouvre contiens l’ID dans son URL :

image

Attention les “%2F” en début et fin de chaine ne font pas partie de l’ID !

4 – Configurez et lancez le script

Copiez le script suivant et sauvez le sous le nom C:\temps\TagDownloader.ps1 (vous pouvez également le télécharger en fin d’article)

##--------------------------##
##--Reader Tags Downloader--##
##--Diagg/Zany & OpenEyes --##
##--------------------------##
Function Downloadxml($Tag)
    {
        $Tag = $Tag.trim()
        Write-Host "TAG : $Tag"
        $Url = "$Url$Tag" + '?n=2000'
        Write-Host "URL : $Url"
        $Destination  = "$Destination\$Tag.xml"
        Write-Host "Destination : $Destination"
        $webclient.DownloadFile($url,$Destination)
    }


cls
$webclient = New-Object system.net.webclient
$UserID = "000000000000000000000"
$Url = "
http://www.google.com/reader/public/atom/user/$UserID/label/"
$DefaultFolder = "C:\Temps"
$Destination = "$DefaultFolder\Feeds"
$ListTags = "$DefaultFolder\MyGoogleTags.txt"
New-Item $Destination -ItemType Directory
Get-Content $ListTags|ForEach {Downloadxml($_)}

##-----------------##
##--Starred Items--##
##-----------------##
$Url = "
http://www.google.com/reader/public/atom/user/$UserID/state/com.google/"
Downloadxml('starred')
##----------------##
##--Shared Items--##
##----------------##
Downloadxml('broadcast')

Modifiez la ligne 18 en remplacent les 0 de $UserID par votre Google ID. Sauvegardez, c’est prêt !!!

5 – Récupérations de  vos tags sous forme de flux RSS

Ouvrez une invite de commande Powershell et placez vous dans le répertoire C:\Temps via la commande Set-location C:\Temps

Exécutez le script TagDownloader.ps1 

image

Et là miracle !!!!… dans le répertoire C:\Temps\Feeds, vos tags arrivent au fur et à mesure sous forme de flux RSS.

image

Il ne vous reste plus qu’à les importer dans un lecteur de Flux (J’ai choisi FeedDemon) pour les lire :

image

Merci Qui ???

jeudi 6 juin 2013

MDT 2012 : Installez en fonction d’une liste de modèles

A_Seventh_20_by_edta

Afin d’éviter des problèmes de support tout azimute, un client international m’a demandé si il était possible que Windows 8 ne s’installe que selon une liste bien définie de machines. J’ai donc modifié le fonctionnement d’MDT en lui ajoutant deux nouvelles variables qui, je l’espère pourront vous aussi vous servir.

Les variables sont :

WhiteList : liste les machines sur lesquelles MDT est autorisé à déployer un OS (Rien sauf les machines de la liste)

BlackList : liste des machines sur lesquelles MDT est explicitement interdit de déployer (Tout sauf les machines de la liste)

Il faut maintenant identifier clairement le nom des machines à ajouter aux listes, et pour cela, la requête WMI suivante va vous aider à les identifier :

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set colItems = objWMIService.ExecQuery( _
    "SELECT * FROM Win32_ComputerSystemProduct",,48)
For Each objItem in colItems
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Win32_ComputerSystemProduct instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Name: " & objItem.Name
    Wscript.Echo "UUID: " & objItem.UUID
    Wscript.Echo "Version: " & objItem.Version
Next

Copiez ce script dans un fichier texte et changez l’extension en .vbs, puis ouvrez une invite de commande et exécutez le. Celui-ci affichera 3 informations d’indentification parmi lesquels vous pourrez choisir celle qui vous convient le mieux  :

image

Généralement, la valeur “Name” donne une information pertinente sur la plus part des machines du marché sauf pour Lenovo pour qui il faut préférer la valeur “Version”. Enfin la valeur UUID vous permet d’identifier une machine unique. 

Implémentation

Téléchargez et installez les scripts dans le répertoire Scripts de votre deployment share.

Editez ensuite le fichier bootstrap.ini afin d’y inclure nos fameuses variables (Attention : Utilisez l’une ou l’autre des variables, mais pas les deux en même temps !) :

Dans la section [settings] ajoutez à Properties les variables WhiteList et  BlackList comme suit :

[Settings]
Properties=WhiteList,BlackList

puis dans la section [default] ajoutez par exemple les modèles sur lesquels vous souhaitez exclusivement déployer votre master :

Whitelist=ThinkPad W520,ThinkPad W530,ThinkPad Tablet 2,HP ElitePad 900

Enfin, mettez à jour votre Deployment Share ( bouton droit sur votre Deployment Share puis Update Deployment Share)

Puis lorsque MDT cherchera à installer Windows sur une machine qui ne fait pas partie de votre WhiteList, il s’arrêtera et bloquera le déploiement de la façon suivante :

image

Les scripts à télécharger (attention ils écrasent des scripts existant !) :

samedi 1 juin 2013

MDT 2012 : Musclez la politique de sécurité du mot de passe Admin.

tranc3d

La saisie du mot de passe administrateur local dans le wizard d’MDT n’est soumisse à aucune restriction. Que diriez-vous de pouvoir imposer des contraintes de longueur minimum, de caractères spéciaux ou de caractères numériques ?

C’est la demande que m’a soumise un client et pour lequel j’ai concocté ce petit bout de script (téléchargeable en fin de billet).

Implémentation

Copiez les scripts de l’archive dans le répertoire scripts de votre deployment share (Attention ces fichiers écrasent des scripts existant !!),  puis éditez les Rules du customsettings.ini de la façon suivante :

Dans la section [settings] ajoutez à Properties les variables PswMinLen, PswMinNumChar, PswMinUppCase, PswMinlowCase comme suit :

[Settings]
Properties=PswMinLen, PswMinNumChar, PswMinSpeChar, PswMinUppCase, PswMinlowCase

Ces nouvelles variables vont vous permettre de régler la complexité des mots de passe :

PswMinLen défini la longueur minimum que doit avoir le mot de passe.

PswMinNumChar défini le nombre minimum de caractères numériques.

PswMinSpeChar défini le nombre minimum de caractères spéciaux.

PswMinUppCase défini le nombre minimum de caractères majuscule.

PswMinlowCase défini le nombre minimum de caractères minuscule.

ainsi, si vous souhaitez que le mot de passe admin. local fasse au moins 8 caractères, dispose de majuscules, de minuscules, d’un caractère spéciale et d’un caractère numérique ; ajoutez vos variables au custommsetting.ini avec les valeur suivantes :

PswMinLen=8
PswMinNumChar=1
PswMinSpeChar=1
PswMinUppCase=1
PswMinlowCase=1

En relançant un déploiement, (et à condition que vous n’ayez pas défini la variable SkipAdminPassword à YES)  vous constaterez que le Wizard du mot de passe a changé : il vous indique dynamiquement les règles auxquelles vous devez vous conformer pour que votre mot de passe soit valide.

image

Un Grand merci à Loic/Experteam pour son code inspirant !!

samedi 25 mai 2013

Ouvrez une Console PowerShell depuis l’explorateur

Flying_Objects_by_Phektion

Si je vous dis : bouton droit, menu contextuel, ouvrez une console powershell ici, ça vous parle ? Oui je parle bien de shell Extension dont la vertu principale a de garnir votre menu contextuel de  fonction supplémentaire. Le cas du jour : PowerShell ou comment l’intégrer à votre explorateur Windows ?!..

Une petite visite sur internet montre qu’il existe déjà quelques pelletés d’articles qui ont traité le sujet, mais comme souvent, aucun qui corresponde vraiment à mon besoin…donc…

Sans plus de fioritures, voici les avantages de cette shell extension par rapport à la concurrence :

- Pas besoin de cliquer sur un fichier .Ps1 ou un dossier pour faire apparaitre la commande dans le menu contextuel (simplement, bouton droit n’importe ou dans la fenêtre !).

- La console s’ouvre en mode administrateur avec un prompt UAC (parce que bosser sans UAC, c’est mal !!!).

- La console s’ouvre avec l’autorisation d’exécuter des scripts.(parce que sinon je ne vois pas l’intérêt d’ouvrir une console…)

Visuellement cela ressemble à ça :

2013-05-20_11h48_46

Et pour l’ajouter à votre menu contextuel, voici les deux étapes que vous devrez réaliser :

- Installez dans votre répertoire C:\windows\System32 la commande Elevate.exe

-  Exécutez la clé de registre suivante : PoshRightClick.reg

Finito !!

dimanche 12 mai 2013

Configurez automatiquement le wallpaper de Windows (the other way!!)

1307246491_splash__soma_collapse_by_neutrix-d2mwxdl

Woot.. en 2013 un post sur comment configurez sont wallpaper !!??? on rêve ou bien ? Et bien pas du tout, et si vous n’êtes pas arrivé sur cette page par hasard, vous savez déjà que le sujet est plus complexe qu’il n’y parait. Pour les autres ; petit récapitulatif avant d’entrer dans le vif du sujet :

Une recherche via Google renvoie le plus souvent à l’utilisation de la clef de registre suivante : HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System

Qui et l’équivalent de cette GPO  :

c9mDz0

2 problèmes à cela :

  • le fait d’appliquer le paramètre en GPO  empêchera l’utilisateur de pouvoir changer de fond d’écran par la  suite.
  • l’utilisation de clefs de registre en …\Policies\… n’est pas digne d’un administrateur réseau qui se respect. Mitch Tulloch, (auteur entre autre du Kit de ressources de Windows 7) vous explique pourquoi ici.

Bon, qu’avons nous d’autre alors ?

Il y’ a bien l’historique clef  HKCU\Control Panel\Desktop\Wallpaper

mais elle souffre, comme sa consœur, d’un petit problème :

  • l’application de cette clé nécessite un rafraichissement des donnée de base de registre par le système. Cette opération était possible grâce à la commande  RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters malheureusement cette commande ne fonctionne plus depuis Windows 7, il faut donc rebooter pour voir le fond d’écran changer… ça marche, mais c’est vraiment pas classe…

Enfin, il y’a la possibilité d’utiliser l’encore plus historique commande SetWallpaper d’OptimumX qui aurait très bien fait l’affaire si elle n’était pas incompatible avec Windows 8… heureusement, il existe une alternative qui elle fonctionne très bien et qui s’appelle WallpaperChanger.

Je pourrai arrêter ce billet ici et me contenter de WallpaperChanger, cependant, j’avais déjà trouvé une solution alternative avant de tomber sur cet outil.

Cette solution à notamment comme avantages de ne pas utiliser d’outils externe et d’être très légère au niveau ressources (comparativement, WallpaperChanger  qui est écrite en C# revient à d’utiliser une moissonneuse batteuse pour couper une fleur…. ça marche mais c’est un peu extrême…)

La solution

J’ai réemployé une technique des Deployment Guys pour appliquer mon Wallpaper en faisant exécuter par un script une commande se trouvant dans un menu contextuel.

Dans notre cas la commande à exécuter apparait lorsque l’on clique avec le bouton droit sur un fichier image :

2013-04-17_09h09_03

le reste est presque un copier/coller du script originale :

Const CSIDL_WINDOWS = &H24
Subpath = "\web\wallpaper\"
Set objShell = CreateObject("Shell.Application")
Set objAllUsersProgramsFolder = objShell.NameSpace(CSIDL_WINDOWS)
strAllUsersProgramsPath = objAllUsersProgramsFolder.Self.Path
Set objFolder = objShell.Namespace(strAllUsersProgramsPath & Subpath)
Set objFolderItem = objFolder.ParseName("MyWallpaper.jpg")
Set colVerbs = objFolderItem.Verbs
For Each objVerb in colVerbs
If Replace(objVerb.name, "&", "") = "Choisir comme arrière-plan du Bureau" Then objVerb.DoIt
Next

L’image doit être placé dans le répertoire C:\Windows\web\Wallpaper (vous pouvez choisir un autre emplacement en modifiant les deux premières lignes)

Remplacez MyWallpaper.jpg par le nom de votre fichier image et lancez le script en contexte utilisateur (Active setup, Script d’ouverture de session, profil par défaut, whatever…)

L’image sera appliqué immédiatement, le script ne requière pas de droit d’administrateur pour s’exécuter, et il n’est plus nécessaire d’utiliser d’outil externe… le bonheur !!!

Dernier point : si vous utilisez le script sur un OS non français, il faudra remplacer la chaine “Choisir comme arrière-plan du Bureau” dans l’avant dernière ligne par son équivalent dans la langue de votre OS  pour que cela continue de fonctionner.

samedi 6 avril 2013

MDT 2012 : Empêchez METRO de masquer votre déploiement en cours.

Splash__neuflow_by_neutrix

Le déploiement de Windows 8 avec MDT 2012 produit un effet indésirable qui, personnellement me gêne beaucoup : à chaque redémarrage, la machine boot en vous proposant l’interface METRO cachant ainsi votre déploiement qui continue à tourner sur le bureau… Il faut alors intervenir manuellement et cliquer sur la tuile du bureau pour vérifier que le déploiement suit bien son cours.. ou qu’il est terminé...

Comme les interventions manuelles c’est mal, je me suis écrits un petit script afin de ne plus jamais avoir à cliquer pour savoir où j’en suis.

Installation

téléchargez  et  installez le script ZTISwitchToDesktop.wsf dans le répertoire scripts de votre Deployment Share.

puis dans votre task sequence ajoutez une nouvelle commande (menu ADD > General > New Command Line) dans la section PostInstall, entre Add Windows Recovery (WinRE) et Next Phase.

2013-03-31_22h07_59

La ligne de commande à saisir est la suivante :

cscript.exe "%SCRIPTROOT%\ZTISwitchToDesktop.wsf" /on

image

A la fin de votre déploiement vous devrez désactiver l’option si vous ne souhaitez pas qu’elle reste active pour vos utilisateurs.

Ajoutez donc à la fin de votre task sequence la commande suivante :

cscript.exe "%SCRIPTROOT%\ZTISwitchToDesktop.wsf" /off

que vous ajouterez dans le sous répertoire Custom Tasks si vous utilisez une task sequence sans capture.

2013-03-31_23h32_16

Ou dans le sous répertoire Capture image si votre séquence comporte un sysprep/capture .

2013-03-31_22h19_04

Petit détail : le switch to desktop n’effectue pas un passage instantané vers le bureau, il prend entre 3 et 5 seconds.Ne vous affolez donc pas si à chaque reboot vous voyez apparaitre en premier lieu l’interface METRO, elle fini toujours par laisser sa place au bureau…

dimanche 24 mars 2013

Conférences, Webcast et vidéos

3Dcaramel_by_TOMYODA

Comme chaque année, cette période est riche en conférences informatique, je profite donc de ce billet pour rassembler celles qui mettent à disposition slides & vidéos, du bonheur en perspective :

 

Techdays 2013 France

techdays20132

299 vidéos de technos Microsoft sur presque tout les produits, j’ai énormément apprécié cette session de BYOD présentée par les DSI et RSSI de Microsoft, qui avec une franchise qu’on connait peu chez MS (…Oui, nous avons 20 % de devices Apple... Non, le BYOD on ne voulez pas y aller au début... ) viennent nous expliquer comment ils ont mis en place le BYOD en interne.Très riche d’enseignements !

 

Bri forum 2012

image

Premier évènement indépendant consacré au VDI et à la consumerisation de IT. Fait par des pros pour les pros. Cette édition 2012 propose comme à son habitude des sessions d’une grande qualité technique. Il y’a 69 sessions à voir.

 

Nic Conference

image

Deuxième Edition de  la Nordic Infrastruccture Conference, avec 71 sessions orientées vers le Cloud, Windows Server et l’infrastructure en générale. à noter, la Keynote de Jeffrey Snover, le père de PowerShell qui vous expliquera comment son bébé a failli ne jamais voir le jour..

 

System Center Univers

SCU2013-title

Organisé par Catapult System, avec plus d’ une 10 ene d’heures de vidéos disponible. Pour ce qui concerne le contenu, tout est dans le titre…

 

European App-V User Group

image

Organisé par la communauté des utilisateurs d’ App-V. Cette édition met l’accent sur la version 5 et vous apprendra tout ce que Microsoft ne vous à pas dit sur cette nouvelle mouture… 5 vidéos sont disponibles.

voila, il ne vous reste plus qu’a vous procurer un arrêt de travail d’environs 2 mois pour regarder et digérer tout cela tranquillement…