programing

Chocolatey와 패키지 목록을 설치하는 PowerShell 스크립트

telecom 2023. 10. 7. 09:25
반응형

Chocolatey와 패키지 목록을 설치하는 PowerShell 스크립트

제 목표는 시스템을 최대한 설치하기 위해 새로운 Windows 빌드에서 다운로드하고 실행할 수 있는 하나의 스크립트를 만드는 것입니다.제가 가장 먼저 하려고 하는 것은 항상 사용 가능하기를 원하는 프로그램을 최대한 많이 설치하는 것입니다.이전에 PowerShell에서 Chocolatey를 직접 설치하기 위해 chocolatey.org 에서 이를 실행했습니다.

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

그 다음에 나는 여러 개의choco installs 다음과 같습니다.

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

(제 생각에는.-y프롬프트 없이 실행합니다.)

스크립트는 Chocolatey가 설치되어 있는지 확인하고, 설치하지 않으면 설치 스크립트를 실행합니다.그런 다음 패키지 이름 목록을 반복적으로 살펴보고 자동으로 설치해야 합니다.

  • 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 명령을 실행하려면 어떻게 해야 합니까?

A를 사용.for루프:

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

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

대체 / 향상

Microsoft에는 PackageManagement(PackageManagement)라는 패키지 관리자(PowerShell v5에 내장됨)가 내장되어 있습니다.ChocolatyGet 공급자와 함께 사용할 수 있습니다(ChocolatyGet 공급자 프로토타입을 사용하지 마십시오. 고장이 났으며 보안 문제가 있습니다).

PackageManagement의 장점은 PowerShell 모듈을 관리하기 위한 PowerShellGet도 갖추고 있다는 것입니다.

그냥 타자..

사용 가능한 모든 모듈/패키지 나열

Find-Module

Find-Module -Name SomeSpecificModuleName(s)

PowerShell 버전 3 - 4의 경우 PowerShellGet을 다운로드하여 설치해야 합니다.

실제로 마이크로소프트는 이를 달성하기 위해 boxstarterchocolatey를 사용하여 window-dev-box-setup-scripts를 개발해 왔습니다.

오픈 소스 프로젝트로 포크를 사용하거나 다운로드하여 필요에 맞게 조정할 수 있습니다.

도움이 되길 바랍니다 :)

실제로 초콜릿 자체(config files)의 기능을 사용하는 배치 스크립트를 만들었습니다.여기 보시면 돼요.구성 파일의 패키지만 변경하면 됩니다.

패키지 목록이 포함된 파일로 답변 드립니다.

#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

Postanote에서 얻은 우수한 통찰력과 "PowerShell 스크립트를 실행하는 방법"을 결합해 보겠습니다.

: home_env_powershell_scr.ps1:

$Packages = 'googlechrome',
            'git'
 
If(Test-Path -Path "$env:ProgramData\Chocolatey") {
  # DoYourPackageInstallStuff
  ForEach ($PackageName in $Packages)
    {
        choco install $PackageName -y
    }
}
Else {
  # InstallChoco
  Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))      

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

이 스크립트를 powershell에서 실행합니다(버전 5에서 확인).

powershell -executionpolicy bypass -File C:\Users\mypath\home_env_powershell_scr.ps1

외부 패키지 파일(무시되는 주석 허용)과 함께 Powershell을 사용하는 스크립트 및 드라이 실행:

install-programs.ps1


## To fix "cannot be loaded because running scripts is disabled on this system" (run: 'get-executionpolicy' returns: Restricted) -->
## set-executionpolicy remotesigned

# Run following to bypass "not digitally signed" issue (fixes per session only)
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

$dryRun = $false;
$packages = 'packages.txt' #'packages-test.txt'

write-host "`n---+++ START powershell script to install packages, using chocolately (`chocolatey.org`) +++---`n"

if($dryRun) {
  write-host "... DRY RUN ONLY ..."
}

$chocoIsInstalled = Test-Path -Path "$env:ProgramData\Chocolatey" # Get-Command choco.exe -ErrorAction SilentlyContinue

if ($chocoIsInstalled) {
  write-host "`n--> Chocolately is already installed ---`n"
}
else {
  write-host "`n--> Chocolately was not installed, let's install it! ---`n"

  if(!$dryRun) {
    write-host "Just kiddin', not gonna install choco"
  }
  else {
    Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
  }
}

$array = (gc $packages) -notmatch '^\s*$' -notmatch '^#' | ? {$_.trim() -ne "" }

foreach($item in $array)
{
  write-host "`n* --> Next package install: '${item}'`n"
  if($dryRun) {
    write-host "Just kiddin', not gonna do it"
  }
  else {
    choco install $item -fy
  }
} 

write-host "`n---+++ FINISH install script +++---`n"

packages.txt플,체)

# browsers
brave
#firefox
#googlechrome 

# Text editors / IDEs
vscode
notepadplusplus

# code
git

choco install --root
<==== $downloading from https://www.repository.mirror.its.co.id//
<===== loading package...
<==== installing..
<=== $installed

설치 시 chocolatey 입력:

@@off
choco feature -on -n .fix.root
installing root...
chocoing...
username: mamas
password: patrakom
loginning...
<=============== downloading choco for windows from https://repository.its.ac.id//choco-installer
installing 7zip-10.45.3.11.0-x64.msi
adding repository from https://mirror.its.ac.id//
<- downloading login packages..]
password: patrakom
packing choco.nupkg
installing...
installed

'mirror.its.hackerindonesia.or.id '에서 초콜릿 덩어리를 열었을 때.

you about install linuxmint_64_xfce4.4_username_Torrent.iso.torrent 
username: mamasdanisy
password: patrakom123
settings: console
partion: chocolatey and c: drive.
are you add for repository this...
installing linux mint xfce...
booting....
saveing windows..
removing windows..
boot uefi booter from apt installer
linuxmint
installing linuxmint...
installed
linuxmint 34.03 lts 
selecting package.logs..
installing linuxmint...
building linuxmint package manually..
null-10-2-999-990 null null null null gawk-root
building linuxmint image...
builded..
installing linuxmint...
installed...
now you boot your choco install and login as mamas danisy and password for user mamas danisy is patrakom123
boot
linux 91.23 lts
[boot] starting service
[boot] starting pidgin with installing...
[boot] maintaining username....
[boot] logging in...
[boot] you are start avahi daemon [y/n] y-
[boot] starting avahi daemon...
[boot] starting linuxmint....
[boot] selecting torrent..
[boot] loading..
[boot] # linux settings [ok] # installing linuxmint [ok]
[boot] installing linuxmint...
[boot] installed.
linuxmint 92.40 text mode login
===============================
username: mamasdanisy
password: patrakom123
installed.
choco install wubi-discontinued
<==== downloading from https://repository.its.ac.id
<===== add link image for wubi manually enter command here: choco manual wubi-discontinued-eof <<echo-root <<echo-root <<installing root... build ubuntu images choco manual ubuntu images..
choco manual build ubuntu images
<======== downloading wubi.exe scripts...
building package wubi.exe from https://repository.its.ac.id//
<=========== installing c:/lib/nupkg/package.logs/wubi.exe/
<=========== packing c:/lib/nupkg/package.logs/wubi.exe/
<============ installing c:/nupkg/package.logs/wubi.exe
<============ installing wubi...
chocolatey has installed 1/1 package manually from repository.its.ac.id

`

언급URL : https://stackoverflow.com/questions/48144104/powershell-script-to-install-chocolatey-and-a-list-of-packages

반응형