0


0



Temps de lecture:8 minutes, 56 secondes

J’écris beaucoup sur ce blog sur les méthodes d’automatisation des choses qui sont généralement faites à partir d’une machine Linux. Je vais être honnête, je n’utilise pas Windows dans ma vie de tous les jours ou dans ma vie personnelle, donc je ne fais pas grand-chose sur la plate-forme.

J’ai récemment eu besoin d’automatiser la configuration et l’installation d’applications sur une boîte Windows avec un besoin de le rendre aussi simple que possible pour qu’une équipe informatique fonctionne sans le tracas d’une intervention manuelle.

Pour ce faire, j’ai utilisé deux outils BoxStarter et Chocolatey

Il s’agit d’une méthode d’installation et de configuration de Windows lors des redémarrages en utilisant dans cet exemple rien de plus qu’un fichier texte.

Chocolatey – Le gestionnaire de paquets pour Windows

Chocolatey est une automatisation de la gestion des logiciels pour Windows qui intègre les programmes d’installation, les exécutables, les zips et les scripts dans des packages compilés. Chocolatey s’intègre à SCCM, Puppet, Chef, etc. Les entreprises font confiance à Chocolatey pour gérer les déploiements de logiciels.

Il s’agit d’un référentiel Windows un peu comme APT ou YUM sur Linux contenant des milliers d’applications installables, toutes installables à partir de la ligne de commande Windows.

Comment faisons-nous cela?

Démarrer Windows Powershell en mode administrateur

Windows 10 est livré avec une zone de recherche Cortana dans la barre des tâches. Tapez simplement powershell dans le champ de recherche.

cortana

Faites un clic droit sur WindowsPowerShell sur les résultats et sélectionnez Exécuter en tant qu’administrateur.

exécuter-powershell-depuis-cortana

L’invite UAC vous demandera votre consentement. Cliquez sur Oui et l’invite PowerShell élevée s’ouvrira.

exécuter-powershell-en tant qu'administrateur

Installer Box Starter

Exécutez la commande suivante dans la console Admin Powershell. Vous n’aurez pas besoin de le faire sur chaque machine, il utilise Chocolatey pour installer Boxstarter. Il est utile d’avoir dans votre environnement de développement.

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://boxstarter.org/bootstrapper.ps1')); Get-Boxstarter -Force

Cela installera Chocolatey et Boxstarter.

L’écran passera par un long script, il peut demander une approbation plusieurs fois.

Une fois cela fait, BoxStarter est installé.

Installer le script

Le fichier d’installation utilisé par Boxstarter se présente sous la forme d’un fichier texte brut et ressemble à ceci

# Boxstarter options$Boxstarter.RebootOk=$true # Allow reboots?$Boxstarter.NoPassword=$false # Is this a machine with no login password?$Boxstarter.AutoLogin=$true # Save my password securely and auto-login after a reboot# Basic setupWrite-Host "Setting execution policy"Update-ExecutionPolicy Unrestricted# Update Windows and reboot if necessaryWrite-Host "Enable MicrosoftUpdate"Enable-MicrosoftUpdateWrite-Host "Change Windows Updates to 'Notify to schedule restart'"# Change Windows Updates to "Notify to schedule restart"If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {New-Item -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Force | Out-Null}Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 1If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {New-Item -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Force | Out-Null}Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 1Write-Host "Disable P2P Update downlods outside of local network"# Disable P2P Update downlods outside of local networkIf (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Force | Out-Null}Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Name DODownloadMode -Type DWord -Value 1Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization -Name SystemSettingsDownloadMode -Type DWord -Value 3If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config")) {New-Item -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Force | Out-Null}Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization\Config -Name DODownloadMode -Type DWord -Value 1Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\DeliveryOptimization -Name SystemSettingsDownloadMode -Type DWord -Value 3Write-Host "Install WindowsUpdate"Install-WindowsUpdate -AcceptEula -GetUpdatesFromMS## SecurityWrite-Host "Disable-BingSearch"Disable-BingSearch# Privacy: Let apps use my advertising ID: DisableWrite-Host "Disable Advertising ID"If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo")) {New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Force | Out-Null}Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 0If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo")) {New-Item -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Force | Out-Null}Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AdvertisingInfo -Name Enabled -Type DWord -Value 0# Privacy: SmartScreen Filter for Store Apps: DisableWrite-Host "If (-Not (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost")) {New-Item -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Force | Out-Null}Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 0If (-Not (Test-Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost")) {New-Item -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Force | Out-Null}Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppHost -Name EnableWebContentEvaluation -Type DWord -Value 0# WiFi Sense: HotSpot Sharing: DisableWrite-Host "Disable Wifi Sense Hotspot"If (-Not (Test-Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting")) {New-Item -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Force | Out-Null}Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 0If (-Not (Test-Path "HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting")) {New-Item -Path HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Force | Out-Null}Set-ItemProperty -Path HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowWiFiHotSpotReporting -Name value -Type DWord -Value 0# WiFi Sense: Shared HotSpot Auto-Connect: DisableWrite-Host "Disable Wifi Hotspot AutoConnect"If (-Not (Test-Path "HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots")) {New-Item -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Force | Out-Null}Set-ItemProperty -Path HKLM:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Name value -Type DWord -Value 0If (-Not (Test-Path "HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots")) {New-Item -Path HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Force | Out-Null}Set-ItemProperty -Path HKCU:\Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots -Name value -Type DWord -Value 0##Enable Windows SandboxWrite-Host "Enable Windows Sandbox"Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online## Install WSL UbuntuWrite-Host "Enable WSL Ubuntu"wsl.exe --install##change variables# Boxstarter options$Boxstarter.RebootOk=$false # Allow reboots?$env:ChocolateyAllowEmptyChecksums=$true##install SoftwareWrite-Host "Install from Choco"cinst -y 7zip.installcinst -y notepadplusplus.installcinst -y googlechromecinst -y firefoxcinst -y adobereadercinst -y winmergecinst -y imagemagick.appcinst -y windirstatcinst -y jdk7cinst -y vacodecinst -y vscode-ansiblecinst -y vscode-puppetcinst -y vscode-cloud-codecinst -y vagrantcinst -y packercinst -y gitcinst -y gitextentionscinst -y puppet-boltcinst -y zoomcinst -y zoom-outlookcinst -y slackcinst -y microsoft-teams#cinst -y microsoft-office-deployment#cinst -y office365businesscinst -y virtualboxcinst -y virtualbox-guest-additions cinst -y pass-winmenucinst -y onedrivecinst -y onenotecinst -y winsshtermcinst -y microsoft-windows-terminalcinst -y pythoncinst -y sysinternalscinst -y wget cinst -y curlcinst -y gotomeetingcinst -y cygwincinst -y vim-consolecinst -y nano cinst -y poshgitcinst -y docker-machinecinst -y docker-enginecinst -y docker-composecinst -y docker-clicinst -y docker-kitematiccinst -y vscode-dockercinst -y gitlab-runner

Décomposons cela

Choix

# Boxstarter options$Boxstarter.RebootOk=$true # Allow reboots?$Boxstarter.NoPassword=$false # Is this a machine with no login password?$Boxstarter.AutoLogin=$true # Save my password securely and auto-login after a reboot

D’autres peuvent être trouvés sur les pages de support, ils sont utilisés pour configurer l’environnement et aider au redémarrage et au maintien de l’état pendant l’exécution du script.

Commandes Powershell

# Basic setupWrite-Host "Setting execution policy"Update-ExecutionPolicy Unrestricted

Des entrées PowerShell directes peuvent être placées dans le script, elles nécessiteront souvent un –Force à la fin pour arrêter de demander les valeurs par défaut.

Entrées de registre

Write-Host "Change Windows Updates to 'Notify to schedule restart'"# Change Windows Updates to "Notify to schedule restart"If (!(Test-Path "HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {New-Item -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Force | Out-Null}Set-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 1If (!(Test-Path "HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings")) {New-Item -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Force | Out-Null}Set-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings -Name UxOption -Type DWord -Value 1

À partir de la ligne de commande à l’aide de Set-ItemProperty, il est possible de mettre à jour et de modifier les paramètres du registre. Dans cet exemple, il existe des boucles pour vérifier si l’entrée existe/a déjà été modifiée.

Activation des fonctionnalités

##Enable Windows SandboxWrite-Host "Enable Windows Sandbox"Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online

Windows a une interface graphique pour activer les fonctionnalités, cela peut également être fait à partir de la ligne de commande et est utile pour activer des choses comme Sandbox ou même SSH Server

Exécuter des exécutables

## Install WSL UbuntuWrite-Host "Enable WSL Ubuntu"wsl.exe --install

En plus des commandes PowerShell, des exécutables simples peuvent également être ajoutés au script. Ceux-ci auront souvent besoin du chemin ajouté en tant que préfixe.

Modification des variables

##change variables# Boxstarter options$Boxstarter.RebootOk=$false # Allow reboots?$env:ChocolateyAllowEmptyChecksums=$true

Il semble possible de modifier les variables à mi-chemin d’une installation.

Installations chocolatées

##install SoftwareWrite-Host "Install from Choco"cinst -y 7zip.installcinst -y notepadplusplus.installcinst -y googlechromecinst -y firefox

cinst est la commande d’installation chocolatée pour Boxstarter et exécute choco install -y

Les forfaits peuvent être trouvés ici

Paquets

Chocolatey est une automatisation de la gestion des logiciels pour Windows qui intègre les programmes d’installation, les exécutables, les zips et les scripts dans des packages compilés. Chocolatey s’intègre à SCCM, Puppet, Chef, etc. Les entreprises font confiance à Chocolatey pour gérer les déploiements de logiciels.

hôte d’écriture

Vous noterez l’utilisation de write-host une commande PowerShell similaire à echo ou print en bash. Ceux-ci vous donnent une sortie d’écran de ce qui se passe.

Exécuter le script

Si notre fichier txt se trouve ici

c:\files\installwin10.txt

Depuis le PC Windows, nous voulons exécuter l’installation sur la commande suivante peut être lancée.

START https://boxstarter.org/packages/ns/url?c:\files\installwin10.txt

Si le txt était hébergé sur une page Web, vous pouvez également exécuter une seule ligne comme suit.

    START https://boxstarter.org/packages/ns/url?http://mywebserver.me/installwin10.txt

L’URL de démarrage de la boîte est l’endroit où les fichiers nécessaires à l’installation sont situés et à partir desquels ils sont installés, le post d’emplacement URL ? est l’endroit où se trouve le fichier d’installation

Cette volonté

  1. Lancer le navigateur Web par défaut
  2. Installer un plug-in Web Boxstarter
  3. Demander des autorisations
  4. Configurer l’environnement Boxstarter
  5. Exécutez le script

Code initial

1.0.0 · mightywomble_public / Boxstarter Win10 · GitLab

Fichier TXT de base avec instructions d’installation pour Windows 10

Et ensuite ?

Il s’agit d’une méthode rapide et sale de très bas niveau, en tant que code, que j’utilise pour reconstruire mon ordinateur portable. Avec un peu de gestion autour de lui, il est possible de le faire en utilisant AD GPO ou n’importe quelle manière de solutions de gestion de système

Références

l’essentiel de cygnull

GitHub Gist : star et fork l’essentiel de cygnull en créant un compte sur GitHub.







 


Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *