Télécharger des fichiers à l’aide de BITS (Windows 7 et Windows 10)

Intérêt ?

Vous souhaitez télécharger un gros fichier (plusieurs GB) mais sans surcharger le lien ? Le transfert BITS est fait pour vous (et ce script aussi).

Avantage :

  • Gestion par queue
  • Taux de transfert modifiable
  • Soumis à la QOS
  • Capacité de reprise (si le serveur en face l’accepte)
  • Téléchargement de fichiers / dossiers sous dossier etc
  • Possible téléchargement multiple.

Inconvénient :

  • Pas « user-friendly »

Téléchargement standard :

saturation de la bande passante

Téléchargement BITS :

téléchargement par « pic », ne saturant plus le lien.

Le script :

Dans cette exemple, nous allons télécharger une ISO Ubuntu de quelques giga (voir la variable $source)
Une fois le téléchargement complété, cette ISO sera ensuite stockée dans un répertoire (voir la variable $destination)

Concernant la source, elle peut être :
– Un fichier (dans un répertoire réseau ou sur internet)
– Un répertoire avec des fichiers (dans un répertoire réseau)

Concernant la destination, elle DOIT être :
– Si on récupère un fichier, la destination DOIT être un fichier. Par exemple, si on télécharge un ISO, la destination doit être C:\XXX\XXX\monfichier.iso
– Si on récupère un répertoire/sous répertoire, la destination DOIT être un répertoire.


Les clefs de registre du début sont là pour configurer BITS (débits et mode) Pour le moment, je n’ai pas trouvé d’autres moyens (si quelqu’un à une idée… :p )

Version avec Proxy :

#Configuration de BITS.
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v EnableBITSMaxBandwidth /t REG_DWORD /d 1 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxBandwidthValidFrom /t REG_DWORD /d 8 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxBandwidthValidTo /t REG_DWORD /d 17 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxTransferRateOffSchedule /t REG_DWORD /d 90000 /f #valeur à modifier pour brider (en Kbit/s)
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxTransferRateOnSchedule /t REG_DWORD /d 90000 /f #valeur à modifier pour brider (en Kbit/s)
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v UseSystemMaximum /t REG_DWORD /d 0 /f

#Authentification Proxy
$ProxyCred = Get-Credential -Message "Proxy Auth"
$source = "http://mirrors.phx.ms/ubuntu-cd/18.04.2/ubuntu-18.04.2-desktop-amd64.iso" #exemple : "T:\XXXXX\XXXXX\macon.doc" ou "T:\XXXXX\XXXXX\*.*" pour copier l'ensemble des répertoires/fichiers
$destination = "C:\Tempo\ubuntu.iso" #exemple : "C:\temp\" ou "C:\temp\macon.doc"

Start-BitsTransfer -Source $source -Destination $destination -Priority low -ProxyUsage SystemDefault -ProxyAuthentication basic -ProxyCredential $ProxyCred -TransferType Download

Version sans proxy :

#Configuration de BITS.
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v EnableBITSMaxBandwidth /t REG_DWORD /d 1 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxBandwidthValidFrom /t REG_DWORD /d 8 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxBandwidthValidTo /t REG_DWORD /d 17 /f
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxTransferRateOffSchedule /t REG_DWORD /d 90000 /f #valeur à modifier pour brider (en Kbit/s)
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v MaxTransferRateOnSchedule /t REG_DWORD /d 90000 /f #valeur à modifier pour brider (en Kbit/s)
REG add "HKLM\SOFTWARE\Policies\Microsoft\Windows\BITS" /v UseSystemMaximum /t REG_DWORD /d 0 /f

$source = "http://mirrors.phx.ms/ubuntu-cd/18.04.2/ubuntu-18.04.2-desktop-amd64.iso" #exemple : "T:\XXXXX\XXXXX\macon.doc" ou "T:\XXXXX\XXXXX\*.*" pour copier l'ensemble des répertoires/fichiers
$destination = "C:\Tempo\ubuntu.iso" #exemple : "C:\temp\" ou "C:\temp\macon.doc"

Start-BitsTransfer -Source $source -Destination $destination -Priority low -TransferType Download

Lancement du script :

Vous devez être administrateur du PC pour pouvoir lancer le script.
Pensez aussi à faire un :

Set-ExecutionPolicy Unrestricted

… pour autoriser l’exécution des scripts.

Lors que vous lancerez le script, le téléchargement se lancera automatiquement, une « barre » de progression s’affichera aussi :

Utiliser BITS pour le téléchargement des mises à jour Windows7 et DOsvc pour Windows 10

Petit Rappel :

Les services :

BITS ou « Background Intelligent Transfer Service », introduit sur Windows Vista, a pour but de brider le téléchargement en arrière plan des mises à jour Windows.

BITS

DOsvc ou « Delivery Optimisation », introduit sur Windows 10 Build 1511, est une véritable mer***** …… désolé. C’est le « remplaçant » de BITS. Il est « CENSÉ » faire la même chose sauf que, même configuré sur un Windows 10 (Build 1511), et bien c’était pas aussi bien que BITS. Et c’était surement dû au fait que, sur les anciens builds de Windows 10, la limite maximale d’utilisation pour DOsvc était exprimée en pourcentage……. % de la bande passante maximale d’une carte en gigabit… vous comprenez ?
DOsvc est utilisé par le Windows Store, et est capable de faire du « pear caching » comme son homologue BITS.

DOsvc « Delivery Optimisation « 

« Pourquoi faire simple, quand on peut faire compliqué »

Les modes de « Delivery Optimisation » :

Il existe différent « mode » pour DOSVC qu’il est possible de configurer via GPO :
HTTP (0) : téléchargement sans cache depuis un WSUS ou Windows Update avec les services Cloud (donc internet) en plus.
LAN (1) : La même chose que le premier sauf qu’en plus, le PC va chercher des petits copains DOsvc sur le LAN pour récupérer les mises à jour.
Groupe (2) : Permets de faire des groupes de PC via un ID, chaque groupe est indépendant de l’autre. Les PC d’un groupe échangeront leurs caches pour télécharger les mises à jour. Pour moi c’est totalement inutile car cela vient en plus de « Site et service active Directory » et du découpage en sous-réseau …
Internet (3) : Utilise DOsvc uniquement vers des sources internet.
Simple (99) : Un mode « offline » , désactive les services Cloud et la mise en cache.
Contournement (100) : Permet de ne pas utiliser DOsvc mais BITS à la place. Personnellement, je trouve cela comme un aveu de Microsoft sur DOsvc (C’est de la m**de, on le sait, on vous propose d’utiliser BITS)……

« La mode passe, le style reste. »

Comprendre ce qu’il se passe lorsqu’un PC à besoin d’une mise à jour :

Que se passe t’il lorsqu’un PC à besoin d’une mise à jour et qu’il y a un WSUS ?

  1. Le PC se connecte au WSUS
  2. Le PC envoi un rapport des mises à jour installées
  3. Le WSUS compare les mises à jour disponibles par rapport aux mises à jour installées (via le rapport envoyé par le PC) et renvoi la liste des mises à jour dites « Applicables »
  4. Le PC affiche « X » mises à jour à installer.
  5. En fonction de la configuration de son service Windows Update, le PC initialisera ou non le téléchargement et l’installation. Comprenez par-là que, c’est le PC qui télécharge et non le WSUS qui pousse les données. C’est le PC qui initie le téléchargement auprès du WSUS et non l’inverse. BITS doit être configuré coté PC et non coté WSUS (dans ce cas là précisément).

Objectif :

Limiter la bande passante utilisée pour les téléchargement en arrière plan. Les services BITS et DOsvc sont là pour ça.

Nous allons configurer, via GPO, ces deux services en fonction des PC.
Sachez que même si BITS est configuré sur Windows 10, DOsvc sera utilisé par défaut.

Lets go :

Nous allons configurer une seule GPO pour les postes en Windows 10 et Windows 7. La configuration de BITS pour les PC en Windows 7 n’affectera pas les postes en Windows 10 et la configuration de DOsvc n’affectera pas les postes en Windows 7. Donc pas besoin de multiplier les GPO.

Configuration de BITS pour les PC en Windows 7 :

RAPPEL : La configuration de BITS se fait sur les ordinateurs et non sur le WSUS. La GPO doit donc s’appliquer sur les ordinateurs et non le WSUS. !!

1) Éditez votre GPO WSUS (ou créez en une)

2) Allez dans « Configuration Ordinateur / Modèles d’administration / Réseau / Service de transfert intelligent en arrière-plan (BITS)« 

3) Double cliquez sur « Limiter la bande passante réseau maximale pour le transferts BITS en arrière-plan »

4) Cochez « Activé » puis configurez à votre guise. Attention, la valeur est exprimée en kilobit et non en koctet . Pensez à diviser par 8 la valeur que vous mettez pour obtenir la valeur en koctet.

Ne soyez pas gourmand, dans mon exemple 80 kilobit suffisent pour que les PC récupèrent leurs mises à jour. Prenez en compte le fait que, les PC vont télécharger toute la journée (ou la nuit). Vous pouvez augmenter la valeur si vous souhaitez que les postes récupèrent plus rapidement les mises à jour.
La case « Utiliser toute la bande passante inutilisée disponible » indique à BITS de télécharger sans limite hors des périodes définies au dessus. J’ai décocher la case pour forcer BITS à télécharger tout le temps à 80 kilobit.

BITS est configuré (configuration rapide car pas de BranchCache, mais ce n’est pas le sujet).

Configuration de « DOsvc » pour les PC en Windows 10 :

!! Attention, vous devez avoir les derniers ADMX de disponible pour Windows 10 dans votre sysvol\PolicyDefinition sinon vous n’aurez pas toutes les dernières fonctionnalités de DOsvc !!
REF : https://support.microsoft.com/fr-fr/help/3087759/how-to-create-and-manage-the-central-store-for-group-policy-administra

Nous allons utiliser le mode « Simple » (99) pour le service d’Optimisation de la Distribution.
– Pas de connexion au Cloud Microsoft Update
– Pas d’échange entre « peers »

1) Éditez votre GPO WSUS (ou créez en une)

2) Allez dans « Configuration Ordinateur / Modèles d’administration / Composant Windows / Optimisation de la distribution »

3) Les deux options principales à configurer sont :
– Mode de téléchargement
– Bande passante de téléchargement maximale (Ko/s)

4) Éditez la configuration de « Mode de téléchargement », et sélectionnez « Activé » et le mode « Simple » (99), Appliquer, fermer.

Éditez la configuration de « Bande passante de téléchargement maximale (Ko/s) », et sélectionnez « Activé » , rentrez une valeur (dans mon exemple 10).

DOsvc est maintenant configuré. La configuration prendra effet au prochain redémarrage de l’ordinateur.

Test / Résultat :

Il faut savoir être patient (surtout avec Windows Update).

!! Sur les PC ayant BITS de configuré, ne forcez pas la recherche des mises à jour coté ordinateurs. L’action manuelle de cliquer sur « Rechercher/installer/télécharger les mises à jour » enclenchera le téléchargement en mode « Foreground » et non « Background » . Le téléchargement en « Foreground » ne prends pas compte la limitation BITS.
Si vous souhaitez effectuer un test, laissez le PC rechercher et installer les mises à jour seul.

https://social.technet.microsoft.com/Forums/windowsserver/en-US/6390ca30-2734-4b83-a581-2b208498a1fc/resolved-bits-dosvc-wsus-and-windows-10-1703?forum=winserverwsus

Vérification sur le WSUS :

On peut facilement vérifier les résultats de cette configuration via le « Moniteur de ressources » depuis le WSUS, onglet Réseau. Vous trouverez une multitude de PC connectés au WSUS, qui téléchargent à vitesse fixe.

Ci dessous un rapport des ordinateurs à jour en agence. BITS / DOsvc étant configurés depuis 2 semaines. Les postes se mettent à jour à l’arrêt chaque soir. Il y a eu un delta à rattraper tout de même.

Vérification sur un PC :

Vous pouvez vérifier de la même manière que sur le WSUS via le « Moniteur de ressources ». Mais aussi en Powershell, les « jobs » de BITS et de DOsvc.

Pour Bits :

Get-BitsTransfer -AllUsers
Résultat de la commande sur un poste en Windows 10 n’ayant pas Bits de configuré.

Pour DOsvc :

Get-DeliveryOptimizationStatus | ft
Résultat de la commande sur un poste en Windows 10. Dans ce cas là, vous pouvez voir que tout les fichiers sont complètements téléchargés (FileSie -> TotalBytesDownloaded)
On remarque aussi que le téléchargement se fait uniquement en HTTP et non via le peercaching (homologue Windows10) ce qui prouve que le mode « Simple » (99) est configuré et utilisé.

2 GPO 1 OU : Distinguer les ordinateurs du siège et des agences via la Gateway

Cas Pratique :

Sous ce titre aguicheur se cache en réalité un problème que de nombreux administrateurs ont déjà rencontré.

1) Mes ordinateurs ne sont pas triés par site
2) « Site et service Active Directory » est configuré par défaut (ne rigolez pas, c’est TRÈS souvent le cas, 3 sociétés, 3 fois le cas)
3) ils sont rangés dans une seule et même Unité d’Organisation.

Objectif :

Je souhaite appliquer une configuration WSUS (ou autre) particulière pour les postes du siège et une autre configuration pour les postes des agences/bureaux.
Principalement, on fait cela lorsqu’on veut utiliser BITS/DoSVC pour le téléchargement des mises à jour.
Ne pas brider le téléchargement au siège (réseau 10GB etc…)
Brider en agence (car MPLS, réseau WAN faible etc…)

Les solutions disponibles :

1) Configurer « Site et service Active Directory » et appliquer la GPO par SITE. Nécessite beaucoup de temps et d’étude avant d’y mettre en place, mais c’est la plus propre…
2) Ranger les PC dans les « OU » spécifiques et appliquer la GPO sur l’OU voulu. C’est long, chiant à faire (rien de valorisant à déplacer des objets de l’Active Directory….), chiant à garder en vie (j’entends par là, déplacer les PC en fonction des mouvements du personnels etc…..)
3) Filtre WMI via la Gateway des PC (la plus simple, pour les fainéants comme moi :p)

La Solution : Filtre WMI

Cette solution consiste à créer et lié un filtre WMI à une GPO afin de filtre en fonction du besoin. Un peu à la manière d’un groupe lié à une GPO.
Exemple de GPO ayant un filtrage par WMI :

Pour les malins : ne faite pas attention au blocage d’héritage, l’AD est en réorganisation, c’est donc normal.

Lets do it :

Création d’un filtre WMI.

Ouvrez « Gestion de Stratégie de Groupe« , allez tout en bas, sur le dossier nommé « Filtres WMI » et faites un clic droit dessus puis « Nouveau…« 

Nommez et décrivez votre futur filtre WMI, puis cliquez sur « Ajouter »

La requête pour les PC du Siège :

Select Mask,Destination,NextHop from Win32_IP4RouteTable WHERE ((Mask='0.0.0.0' AND Destination='0.0.0.0') AND (NextHop='VOTRE GATEWAY DU SIEGE ICI'))

La requête pour les PC des agences :

Select Mask,Destination,NextHop from Win32_IP4RouteTable WHERE ((Mask='0.0.0.0' AND Destination='0.0.0.0') AND (NextHop<>'VOTRE GATEWAY DU SIEGE ICI'))

NB : Vous n’avez qu’a modifier « VOTRE GATEWAY DU SIEGE ICI » et rien d’autre.

Et oui, il y a bien une différence entre les deux requêtes. Elle se situe ici :
« AND (NextHop<> » = différent de
« AND (NextHop= » = égale

Pour faire simple :
– Si la Gateway est égale à celle du siège, alors le PC est au siège
– Si la Gateway est différente de cette du siège, alors le PC est en agence (ou ailleurs)

Collez la requête que vous souhaitez ici, puis validez.

Cliquez sur « Enregistrer », votre requête WMI est prête. Vous pourrez alors la sélectionner dans votre GPO comme dans l’exemple ci dessous » :

Qu’est ce que cela donne lors d’un GPRESULT ?

Ceci :

Mon PC est actuellement au siège. La valeur est Vrai.

Mes GPO (à droite) sont appliquées ou non en fonction de la valeur Faux/Vrai du filtre WMI (à gauche). Si « faux » la GPO ne s’applique pas, si « Vrai », la GPO s’applique.
C’est aussi simple que cela.

Créer une machine virtuelle CORRECTEMENT !

Avant Propos :

Je te vois venir ! Tu vas chercher la petite bête pour pouvoir mettre un commentaire « sabrant » sur ce tuto, mais sache que c’est marqué « CORRECTEMENT » et pas « PARFAITEMENT » (on s’en rapproche quand même un peu)…. 🙂

Pourquoi faire un tuto sur une chose si simple à faire ?

Trop souvent, on néglige des paramètres lors de la création des machines virtuelles. Trop souvent, on a tendance à en mettre trop, trop de CPU, trop de RAM, trop de trop etc… #overcommitment 
Et trop souvent, on se dit : « Ah ! J’aurai du activer ceci , ou cela etc… »

Le Choix du contrôleur « Virtual SCSI » :

  • Par défaut, le contrôleur choisi est « LSI Logic SAS ».Effectivement, c’est le contrôleur recommandé par Microsoft lorsqu’on installe un Windows Server 2008 ou supérieur… (obligatoire si Microsoft MSCS)
  • PVSCSI , technologie VMware, dédié et optimisé pour la virtualisation. Si votre VM va consommer des Iops (Bases de donnée etc), ou si votre stockage est performant, utilisez le.

Mon point de vue :
Si MSCS, j’utilise LSI Logic SAS.
Sinon, j’utilise PVSCSI.

Quelle est l’intérêt du PVSCSI par rapport au LSI Logic SAS ?

Les plus :
– Consomme moins de CPU par IO (moins de cycle CPU en cas d’un Workload élevé)
– Conseillé pour les serveurs qui vont consommer beaucoup d’IOPS.
– Technologie de contrôleur dédiée à la virtualisation
– C’est une technologie VMware <3

Les moins :
– N’est pas supporté par Microsoft MSCS ….
– Pas de driver natif dans Windows, obligé de passer par ceux de VMware.

Le CPU : « Best Practice »

Les règles :
– Créer une machine virtuelle avec 1 vCPU, vous pourrez en rajouter en fonction du besoin.
– Ne « sur approvisionnez » pas la machine virtuelle, vous risquez de dégrader les performances des autres machines virtuelles.
– De manière générale, les HOST ESX gèrent très bien le « sur approvisionnement » mais il ne faut pas non plus en abuser.
Le mieux est de calculer l’ensemble des vCPU alloués par rapport aux vCPU disponibles et équilibrer le tout.
Le ratio de « sur approvisionnement » est de 1 pour 1 jusqu’à un maximum de 3 pour 1, passez au dessus, c’est vraiment pas bon.
Exemple : 24vCPU alloués sur 24 vCPU disponibles = OK / 48vCPU alloués sur 24 vCPU disponibles = OK /
72vCPU alloués sur 24 vCPU disponibles = NON OK

BONUS :

Calculer la ressource disponible d’un HOST :
pCPU = nombres de cœurs physiques
vCPU = nombre de cœurs virtuels

Calculer le nombre de cœurs physiques pCPU :
Nombre de Processeurs Physiques (sockets) * Nombre de cœurs physiques = pCPU
Exemple : Mon ESX dispose de 2 sockets (processeurs physiques), chaque socket dispose de 6 cœurs alors :
2 * 6 = 12 pCPU

Calculer le nombre de cœurs virtuels vCPU (Hyperthreading) :
Nombre de pCPU * 2 = vCPU
Exemple :
Mon ESX à 12 pCPU et dispose de l’Hyperthreading alors :
12 * 2 = 24 vCPU

NOTA BENE : l’Hyperthreading ne double pas le nombre de vCPU, c’est plus complexe que cela.
l’Hyperthreading agit sur chaque cœur physique en leur permettant d’avoir deux « threads », un actif et un en « queue/attente » d’exécution permettant l’enchaînement de calcul à chaque cycle plutôt que d’attendre l’instruction d’un autre calcul à la fin d’un cycle complet.

Création de la Machine Virtuelle :

La VM va être créée et modifiée uniquement via l’interface Web en FLASH. Etant en version 6.0, l’HTML5 Aka « FlatDesignDegueux » n’est pas disponible.

Vous venez de lancer l’assistant de création de machine virtuelle. A la fin, vous pouvez éditer le matériel avant de finaliser la création.

Onglet : Matériel Virtuel

Le CPU :

NB : 2 sockets car pré-requis technique d’une application lors de la capture d’écran.

Possibilité de régler la « Parts » en « haute » si la machine doit être prioritaire vis-à-vis de la consommation des ressources CPU par rapport aux autres VM (SharedCPU). Plus la part est haute, plus elle est « prioritaire ». Cette valeur est aussi applicable sur un pool de ressource.

La Mémoire :

4GB, toujours suivant les pré-requis de mon application.

Le contrôleur SCSI :

Suppression du lecteur de disquette :

Carte Réseau en VMXNET3 :

Onglet : Options VM

Forcer le boot sur le BIOS virtuel afin d’effectuer quelques opérations :

Nous allons bloquer la possibilité de débrancher les périphériques de stockage et réseau :

Ce que nous voulons éviter…

Cliquez sur « Modifier la configuration » :

Ajouter une ligne : devices.hotplug false

NOTA BENE : la ligne « devices.hotplug false » n’empêche pas l’ajout de RAM / CPU et disque à chaud sur la machine virtuelle.

A ce stade, vous pouvez valider la création de la machine virtuelle.

Modification dans le BIOS :

Démarrez la machine virtuelle afin d’arriver au BIOS, allez dans le menu « Advanced » via les flèches directionnelles du clavier :

Ensuite : allez dans « I/O Device Configuration » (touche Entrer):

Passez tout en « Disabled »

Pensez à sauvegarder avant de quitter le BIOS 😉 :
« Exit Saving Changes »

Éteindre la Machine Virtuelle.

Éditez la VM pour ajouter un ISO de Windows dans le lecteur virtuel (pensez à cocher la case « Connecter lors de la mise sous tension »).

Sélectionnez votre ISO Windows Server 2012 ou 2016 ou 2019 ou 2021 etc … :p

Etape Supplémentaire pour le PVSCSI :

Démarrer votre VM, lancer le Setup d’installation etc….. :

Lors de la sélection de l’emplacement d’installation de Windows, il n’y aucun disque de visible. Celui ci n’est pas visible car l’image de boot de Windows ne contient pas les drivers pour les contrôleurs PVSCSI.

Retournez sur le vCenter, Éditez votre VM actuellement allumée, puis allez changer de DVD de Windows pour mettre les VMWare Tools à la place du DVD Windows Server.

Retournez sur votre VM et cliquez sur « Load drivers » ou « chargez un driver »

Puis « Browse » ou « Parcourir »

Allez chercher le driver dans l’ISO des VMware Tools :

Vous devriez  voir le driver « PVSCSI Controller » apparaître comme ci-dessous :

Votre disque dur va apparaître comme par magie !

Le message d’erreur indique juste qu’il faut « réinsérer » le disque d’installation de Windows Server (remplacer le disque des VMware Tools via celui de Windows sans éteindre la machine virtuelle). Vous pouvez cliquer sur «refresh», le message va disparaître.
Vous pouvez continuer votre installation de Windows.

Fin :

A la fin de l’installation pensez à faire ceci :
– Installer les VMware Tools (obligatoire car le driver des VMXNET3 ne sont pas inclus dans Windows)
– Supprimer le lecteur de DVD

Votre Machine Virtuelle est prête. Windows peut être configuré.


Activer Windows 10 lors d’un déploiement MDT à travers un Proxy.

Principe / cas pratique :

Vous souhaitez activer Windows 10 lors d’un déploiement MDT mais vous êtes derrière un proxy et le compte Local du PC utilisé pendant le déploiement n’a pas accès à internet. Que faire ?

Mettre un script lors du déploiement pour simuler une connexion au proxy via un compte de service qui a accès à internet.

Lets Go :

Afin de faire les choses proprement et ne pas mettre de mot de passe en claire dans le script, nous allons générer une clef contenant le mot de passe du compte. Vous allez donc avoir besoin de ceci en premier :

$masecurestring = ConvertTo-SecureString -AsPlainText 'MOT DE PASSE DU COMPTE QUI DEVRA SE CONNECTER AU PROXY' -force
$maclef = $masecurestring | ConvertFrom-SecureString
$CheminRepertoireClef = "chemin daccess pour stocker la clef"
out-file -filepath "$CheminRepertoireClef\MaClef.txt" -InputObject $maclef 
#Ecriture du résultat dans le fichier MaClef.txt

! Pensez à supprimer le mot de passe rentré dans le script une fois le fichier généré !

Une fois le fichier généré, stockez le quelque part en attendant la suite.

Le script d’activation :

Le script va faire appel au .NET suivant :
System.Net.WebProxy, System.Net.WebClient, System.Net.NetworkCredential permettant la communication vers internet via un proxy + authentification.
Il y a aussi une requête WMI pour trouver la clef d’activation Windows 10 lié au matériel et l’installer.

Il faut changer les variables suivantes pour que cela « match » avec votre environnement :

$Username= "Nom d'utilisateur, exemple : CORPO\utilisateur ou utilisateur etc.."
$MaClef= "chemin vers le fichier"
$WebProxy= New-Object System.Net.WebProxy("IP:PORT DU PROXY",$true)

Le script entier :


$Username= "Nom d'utilisateur, exemple : CORPO\utilisateur ou utilisateur etc.."
$MaClef= "chemin vers le fichier"
$Password= Get-Content $MaClef | ConvertTo-SecureString
$WebProxy= New-Object System.Net.WebProxy("IP:PORT DU PROXY",$true)
$url="http://google.fr"

#Configuration proxy
Write-Host "Configuration du Proxy pour l'activation Windows"
$WebClient = New-Object System.Net.WebClient
$WebClient.Proxy=$WebProxy
$WebClient.Proxy.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)

#Init dun telechargement pour confirmer lauth proxy
$WebClient.DownloadData($url)

#Interrogation pour recup la clef et l'installer
Write-Host "Get de la Clef Windows depuis le bios"
$keyrecup = powershell "(Get-WmiObject -query ‘select * from SoftwareLicensingService’).OA3xOriginalProductKey"
$computer = gc env:computername
$service = get-wmiObject -query "select * from SoftwareLicensingService" -computername $computer
$service.InstallProductKey($keyrecup)
$service.RefreshLicenseStatus()

#activation de windows
Write-Host "Activation de Windows, veuillez patienter"
#Creation dun job pour lactivation
Start-Job -ScriptBlock {start-process cmd.exe -ArgumentList "/C slmgr.vbs /ato"}

Je pense que le script est suffisamment commenté pour que vous puissiez comprendre ce qu’il fait. Je vous conseille de le tester avant de le mettre en production sur le MDT. Les erreurs sont assez explicites :

Ici , c’est un problème avec le mot de passe ou le compte utilisé pour s’authentifier sur le proxy.

Créer une tâche sur le MDT :

  1. Copier le script Powershell et le fichier MaClef.txt dans le répertoire de votre DeploiementShare. Dans mon cas, le répertoire se trouve içi :
     » C:\MDT\Scripts « 
  2. Modifier le script afin d’avoir cette variable là (pour faire simple , on signale au script que la clef se trouve dans le même répertoire) :
$MaClef= "C:\MDT\Scripts\MaClef.txt"
devient :
$MaClef= ".\MaClef.txt"

3. Éditez votre « Task Sequence » préféré :

4. Allez dans le deuxième onglet puis dans la catégorie « State Restore »

5. Cliquez sur « Add » puis « General » et enfin « Run Command Line »

Et non pas « Run PowerShell Script »

6. Éditez votre nouvelle tâche « Command Line » comme ci dessous :

La « Command Line » si vous souhaitez faire un « copier coller » :

Powershell.exe -ExecutionPolicy ByPass -File "%SCRIPTROOT%\MDT_activation_windows.ps1"

7. Dans les « Options » de la tâche, vous pouvez cocher « Continue on Error » pour éviter que le script ne fasse stopper votre déploiement. Vous pourrez toujours lancer le script à la main à la fin du déploiement.