web-dev-qa-db-fra.com

Script PowerShell pour installer Chocolatey et une liste de paquets

Mon objectif est de créer un script unique que je peux télécharger et exécuter sur une nouvelle version de Windows afin de configurer le système autant que possible. La première chose que j'essaie de faire est d’installer le plus grand nombre possible de programmes que j’aime toujours avoir. J'ai déjà exécuté ceci (c'est à partir de chocolatey.org) pour installer Chocolatey directement à partir de PowerShell:

Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

Puis j'ai couru un tas de choco installs comme ceci:

choco install googlechrome -y
choco install git -y
choco install notepadplusplus -y
choco install sql-server-management-studio -y

(Je pense que le -y les fait fonctionner sans invite.)

Le script doit vérifier si Chocolatey est installé et si ce n’est pas le cas, exécutez le script d’installation. Ensuite, il devrait parcourir une liste de noms de paquets et les installer en mode silencieux.

  • Comment détecter si Chocolatey est déjà installé?
  • Comment puis-je exécuter la commande install de manière conditionnelle en fonction de ce résultat?
  • Comment puis-je parcourir une liste de packages et exécuter la commande choco install sur chacun d'eux?

Si vous avez des suggestions sur la façon d'atteindre mon objectif principal en utilisant d'autres moyens, merci de me le faire savoir.

7
Benjamin Cuningham

Vous pouvez répondre à toutes vos questions en consultant les fichiers d’aide PowerShell et la documentation technique Microsoft:

(Get-Command -Name Test-Path).Parameters
Get-help -Name Test-Path -Examples
Get-help -Name Test-Path -Full
Get-help -Name Test-Path -Online

For boucles

(Je pense que le -y les fait courir sans invite.)

Correct, et il devrait toujours être utilisé dans les scripts.

Le script doit vérifier si Chocolatey est installé et sinon, lancez le script d'installation . Ensuite, il devrait parcourir une liste de noms de paquets et les installer en mode silencieux.

• Comment détecter si Chocolatey est déjà installé?

Utiliser PowerShell pour rechercher rapidement les logiciels installés

Utilisez le lien ci-dessus - ou une variable d'environnement définie lors de l'installation, ChocolateyInstall, est définie sur C:\ProgramData\Chocolatey par défaut.

Test-Path -Path "$env:ProgramData\Chocolatey"

Une façon plus déterministe peut être d'essayer

$ChocoInstalled = $false
if (Get-Command choco.exe -ErrorAction SilentlyContinue) {
    $ChocoInstalled = $true
}

# Do something with that for installation

• Comment puis-je exécuter la commande install de manière conditionnelle en fonction de ce résultat?

Utilisation d'une instruction if:

If(Test-Path -Path "$env:ProgramData\Chocolatey") {
    DoYourPackageInstallStuff}
Else {
    InstallChoco
    DoYourPackageInstallStuff
}

• Comment puis-je parcourir une liste de paquets et exécuter la commande choco install sur chacun d'eux?

Utilisation d'une boucle for:

$Packages = 'googlechrome', 'git', 'notepadplusplus', 'sql-server-management-studio'

ForEach ($PackageName in $Packages)
{
    choco install $PackageName -y
}

Alternative/amélioration

Microsoft a un gestionnaire de packages intégré manager appelé PackageManagement (intégré à PowerShell v5). Vous pouvez l'utiliser avec un fournisseur ChocolateyGet (n'utilisez pas le fournisseur prototype de Chocolatey, il est défectueux et pose des problèmes de sécurité) pour gérer les dépendances de tiers.

PackageManagement présente l'avantage de permettre également à PowerShellGet de gérer les modules PowerShell.

Il suffit de taper ..

Lister tous les modules/packages disponibles

Find-Module

Find-Module -Name SomeSpecificModuleName(s)

Pour PowerShell version 3 à 4, vous devez télécharger et installer PowerShellGet.

14
postanote

J'ai en fait créé un script batch qui utilise la fonctionnalité de chocolatately (fichiers de configuration). Vous pouvez le rechercher ici . Il suffit de changer les packages dans les fichiers de configuration.

2
Riddim

En fait, Microsoft a travaillé sur un windows-dev-box-setup-scripts pour ce faire, avec boxstarter et chocolatey

En tant que projet open source, vous pouvez le télécharger ou le télécharger et l’adapter à vos besoins.

J'espère que ça aide :)

2
ddieppa