私の目標は、できる限りシステムをセットアップするために、新しいWindowsビルドでダウンロードして実行できる単一のスクリプトを作成することです。私が最初にやろうとしていることは、可能な限り利用したいプログラムをできるだけ多くインストールすることです。以前にこれを実行して(chocolatey.orgから)、PowerShellから直接Chocolateyをインストールしました。
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
次に、次のようなchoco install
sの束を実行しました。
choco install googlechrome -y
choco install git -y
choco install notepadplusplus -y
choco install sql-server-management-studio -y
(-y
により、プロンプトなしで実行できると思います。)
このスクリプトは、Chocolateyがインストールされているかどうかを確認し、インストールされていない場合はインストールスクリプトを実行する必要があります。次に、パッケージ名のリストをループし、サイレントインストールします。
choco install
コマンドを実行するにはどうすればよいですか?他の手段を使用して私の主な目標を達成する方法について何か提案があれば、私に知らせてください。
PowerShellヘルプファイルと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
ループ(-yを指定すると、プロンプトなしで実行されます。)
正しい、それは常にスクリプトで使用する必要があります。
スクリプトは、Chocolateyがインストールされているかどうかを確認し、インストールされていない場合は、インストールスクリプトを実行します。次に、パッケージ名のリストをループし、サイレントインストールします。
•Chocolateyがすでにインストールされているかどうかを検出するにはどうすればよいですか?
PowerShellを使用してインストール済みソフトウェアをすばやく見つける
上記のリンクを使用します-または、インストール時に設定される環境変数ChocolateyInstall
があり、デフォルトでC:\ProgramData\Chocolatey
に設定されます。
Test-Path -Path "$env:ProgramData\Chocolatey"
より決定的な方法は、試すことです
$ChocoInstalled = $false
if (Get-Command choco.exe -ErrorAction SilentlyContinue) {
$ChocoInstalled = $true
}
# Do something with that for installation
•その結果に基づいてインストールコマンドを条件付きで実行するにはどうすればよいですか?
if
ステートメントの使用:
If(Test-Path -Path "$env:ProgramData\Chocolatey") {
DoYourPackageInstallStuff}
Else {
InstallChoco
DoYourPackageInstallStuff
}
•パッケージのリストをループし、各パッケージでchoco installコマンドを実行するにはどうすればよいですか?
for
ループの使用:
$Packages = 'googlechrome', 'git', 'notepadplusplus', 'sql-server-management-studio'
ForEach ($PackageName in $Packages)
{
choco install $PackageName -y
}
Microsoftには、PackageManagement(PowerShell v5に組み込まれている)という組み込みのパッケージマネージャーmanagerがあります。サードパーティの依存関係を管理するために、ChocolateyGetプロバイダーで使用できます(プロトタイプのChocolateyプロバイダーは使用しないでください。壊れており、セキュリティ上の問題があります)。
PackageManagementの利点は、PowerShellモジュールを管理するためのPowerShellGetも備えていることです。
入力するだけ.
利用可能なすべてのモジュール/パッケージを一覧表示する
Find-Module
Find-Module -Name SomeSpecificModuleName(s)
PowerShellバージョン3-4の場合、PowerShellGetをダウンロードしてインストールする必要があります。
実際に、chocolately自体の機能(configファイル)を使用するバッチスクリプトを作成しました。調べることができます こちら 。構成ファイル内のパッケージを変更するだけです。
実際にMicrosoftは windows-dev-box-setup-scripts で作業しており、 boxstarter および chocolatey
オープンソースプロジェクトとして、あなたはそれをフォークするか、ダウンロードしてあなたのニーズに適応させることができます
それが役に立てば幸い :)
パッケージのリストを含むファイルの私の答えは次のとおりです。
#Requires -RunAsAdministrator
Set-ExecutionPolicy Bypass -Scope Process -Force
# install chocolatey if not installed
if (!(Test-Path -Path "$env:ProgramData\Chocolatey")) {
Invoke-Expression((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
}
# for each package in the list run install
Get-Content ".\packages" | ForEach-Object{($_ -split "\r\n")[0]} | ForEach-Object{choco install -y $_}
このパスに次の内容のpackages
という名前のファイルがあると仮定します。
googlechrome
git
notepadplusplus
sql-server-management-studio