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 install
s 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.
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.
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
}
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.
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.
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 :)