programing

파워셸:연결되지 않은 시스템에 PowerShell용 Nuget 공급자를 설치하여 PS 명령줄에서 Nuget 패키지를 설치하려면 어떻게 해야 합니까?

muds 2023. 7. 30. 18:11
반응형

파워셸:연결되지 않은 시스템에 PowerShell용 Nuget 공급자를 설치하여 PS 명령줄에서 Nuget 패키지를 설치하려면 어떻게 해야 합니까?

를 설치하려고 pswindowsupdate.2.0.0.4.nupkg인터넷에 연결되지 않은 Windows 7(윈도우 7) 컴퓨터의 Powershell 명령줄에서 사용할 수 있습니다.PS 5.1.14409.1005를 실행하고 있습니다.https://www.preview.powershellgallery.com/packages/PSWindowsUpdate/2.0.0.4 에서 nupkg을 받았습니다.

PSInstall-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}다음과 같은 오류 메시지가 표시합니다.

PowerShellGet에서 NuGet 기반 저장소와 상호 작용하려면 NuGet 공급자 버전 '2.8.5.201' 이상이 필요합니다.NuGet 공급자는 C:에서 사용 가능해야 합니다.\Program Files\PackageManagement\ProviderAssembly' 또는 'C:\Users{mylogin}\AppData\Local\PackageManagement\ProviderAssembly'입니다.또한 'Install-PackageProvider-NameNuGet-MinimumVersion 2.8.5.201 -Force'를 실행하여 NuGet 공급자를 설치할 수 있습니다.지금 PowerShell에서 NuGet 공급자를 설치하고 가져오시겠습니까?

물론 인터넷에 연결되어 있지 않기 때문에 '예'라고 말하면 NuGet 공급자를 설치하지 못합니다.

는 나는얻음을 얻었습니다.nuget.exe 'v4.7.0)', 'C:'에했습니다.\Program Files\PackageManagement\ProviderAssembly' 와 'C:\ Files를 my\Program Files\PackageManagement\ProviderAssembly'의 my 로로 이동합니다path진술. 그나실을 실행합니다.Install-Module -Name pswindowsupdate.2.0.0.4.nupkg -Repository {path to pswindowsupdate.2.0.0.4.nupkg}여전히 실패합니다.

이 정확히 입니까?NuGet providernuget.exe?PowerShell 명령줄에서 이 Nuget 패키지를 설치할 수 있도록 PowerShell용 Nuget 공급자(v2.8.5.201 이상)를 가져와 설치하는 방법은 무엇입니까?

참고: Visual Studio는 제 질문에 전혀 관여하지 않습니다.

이전의 모든 답변을 시도해 보았지만 다음 답변만 해결되었습니다.

1 - Powershell 열기(관리자 권한으로)

2 - 실행:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

3 - 실행:

Install-PackageProvider -Name NuGet

저자는 닐스 와이스트라: 마이크로소프트 포럼입니다.

trebleCode의 답변을 받아들였지만 관심 nupkg을 설치하기 위해 취한 조치에 대해 조금 더 자세히 설명하고자 합니다.pswindowsupdate.2.0.0.4.nupkgTrebleCode의 답변을 따르는 방법으로 연결되지 않은 Win 7 기계에서.

첫 번째: 좀 더 조사해 본 결과, trebleCode가 언급하는 MS 문서를 발견했다고 생각합니다.

NuGet 공급자 및 NuGet.exe를 부트스트랩

설치-패키지 공급자

트레블 코드가 언급한 것처럼 계속하기 위해 다음을 수행했습니다.

연결된 컴퓨터에 NuGet 공급자 설치

연결된 시스템(Win 10 시스템)에서 PS 명령줄에서 이란을 실행했습니다.Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208 -ForceNuget 소프트웨어는 'Net'에서 가져와 로컬 연결된 컴퓨터에 설치되었습니다.

후 는 NuGet 파일에 있습니다.C:\Program Files\PackageManagement\ProviderAssemblies 이름)\ProviderAssemblies와는반과 \ReferenceAssemblies트레블 코드의 답변과 관련된 한 가지 사소한 차이였습니다.

공급자 소프트웨어는 다음과 같은 폴더 구조에 있습니다.

C:\Program Files\PackageManagement\ProviderAssemblies
   \NuGet
      \2.8.5.208
         \Microsoft.PackageManagement.NuGetProvider.dll
     

연결되지 않은 컴퓨터에 NuGet 공급자 설치

에서 \ 폴더 하위 폴더썸하여 결된컴및 \NuGet 폴를 (든모하위폴더더다니복습했사연다에음여)로 했습니다.C:\Program Files\PackageManagement\ProviderAssemblies연결되지 않은 ( 7) (Win 7) 스은않되지서.

는 비연결 7)를 하고 연되지않은결(Win 7) 서에를 PS(v5) 고다습을 실행했습니다.Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.208 공를현가로 .PowerShellsession

도망친Get-PackageProvider -ListAvailable그리고 이것을 보았습니다(NuGet은 이전에 존재하지 않았던 곳에 나타납니다).

Name                     Version          DynamicOptions                                                                                                                                                                      
----                     -------          --------------                                                                                                                                                                      
msi                      3.0.0.0          AdditionalArguments                                                                                                                                                                 
msu                      3.0.0.0                                                                                                                                                                                              
NuGet                    2.8.5.208        Destination, ExcludeVersion, Scope, SkipDependencies, Headers, FilterOnTag, Contains, AllowPrereleaseVersions, ConfigFile, SkipValidate                                             
PowerShellGet            1.0.0.1          PackageManagementProvider, Type, Scope, AllowClobber, SkipPublisherCheck, InstallUpdate, NoPathUpdate, Filter, Tag, Includes, DscResource, RoleCapability, Command, PublishLocati...
Programs                 3.0.0.0          IncludeWindowsInstaller, IncludeSystemComponent

연결되지 않은 컴퓨터에 로컬 리포지토리 만들기

7: 연되지않은 (Win 7)).c:\users\foo\Documents\PSRepository)

보고서를 등록했습니다.Register-PSRepository -Name fooPsRepository -SourceLocation c:\users\foo\Documents\PSRepository -InstallationPolicy Trusted

pswindowsupdateNuGet 패키지 설치

나는 nupkg을 받아서 복사했습니다.pswindowsupdate.2.0.0.4.nupkgc:\users\foo\Documents\PSRepository 연결되지 Win7 에서 ㅠㅠㅠㅠㅠ Win7 ㅠㅠㅠㅠㅠ

모듈의 이름을 실행하여 배웠습니다.Find-Module -Repository fooPsRepository

Version    Name                                Repository           Description                                                                                                                      
-------    ----                                ----------           -----------                                                                                                                      
2.0.0.4    PSWindowsUpdate                     fooPsRepository      This module contain functions to manage Windows Update Client.

를실하모설다니치습을 실행했습니다.Install-Module -Name pswindowsupdate

하기 위해 를실하모설확치다인니습을 실행했습니다. Get-Command –module PSWindowsUpdate

CommandType     Name                                               Version    Source                                                                                                                 
-----------     ----                                               -------    ------                                                                                                                 
Alias           Download-WindowsUpdate                             2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Get-WUInstall                                      2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Get-WUList                                         2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Hide-WindowsUpdate                                 2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Install-WindowsUpdate                              2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Show-WindowsUpdate                                 2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           UnHide-WindowsUpdate                               2.0.0.4    PSWindowsUpdate                                                                                                        
Alias           Uninstall-WindowsUpdate                            2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Add-WUServiceManager                               2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Enable-WURemoting                                  2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WindowsUpdate                                  2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUApiVersion                                   2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUHistory                                      2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUInstallerStatus                              2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUJob                                          2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WULastResults                                  2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WURebootStatus                                 2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUServiceManager                               2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUSettings                                     2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Get-WUTest                                         2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Invoke-WUJob                                       2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Remove-WindowsUpdate                               2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Remove-WUServiceManager                            2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Set-WUSettings                                     2.0.0.4    PSWindowsUpdate                                                                                                        
Cmdlet          Update-WUModule                                    2.0.0.4    PSWindowsUpdate 

저는 가도 될 것 같아요.

MSDocs는 시나리오에 대해 다음과 같이 설명합니다.

패키지 관리를 처음 실행하려면 Nuget 패키지 공급자를 다운로드하기 위해 인터넷에 연결해야 합니다.그러나 시스템에 인터넷이 연결되어 있지 않고 Nuget 또는 PowerShellGet 공급자를 사용해야 하는 경우에는 다른 시스템에 다운로드하여 대상 시스템에 복사할 수 있습니다.이 작업을 수행하려면 다음 단계를 수행합니다.

  1. 려달을 합니다.Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force인터넷에 연결된 컴퓨터에서 공급자를 설치합니다.

  2. 후 는 설치가설공찾있에서 찾을 수.$env:ProgramFiles\PackageManagement\ReferenceAssemblies\\\<ProviderName\>\\\<ProviderVersion\>또는$env:LOCALAPPDATA\PackageManagement\ProviderAssemblies\\\<ProviderName\>\\\<ProviderVersion\>.

  3. 대상 컴퓨터의 해당 위치에 Nuget 폴더(이 경우 Nuget 폴더)를 배치합니다.대상 시스템이 Nano 서버인 경우 Nano 서버에서 Install-PackageProvider를 실행하여 올바른 Nuget 이진 파일을 다운로드해야 합니다.

  4. PowerShell을 재시작하여 패키지 공급자를 자동으로 로드합니다. 를 합니다.Get-PackageProvider -ListAvailable시스템에서 사용할 수 있는 모든 패키지 공급자를 나열합니다.사용할 경우Import-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201공급자를 현재 윈도우즈 PowerShell 세션으로 가져옵니다.

사용해 보십시오.

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Install-PackageProvider NuGet -Force

Set-PSRepository PSGallery -InstallationPolicy Trusted

공급자는 PowerShell>=6.0과 함께 번들로 제공됩니다.

파일에서 패키지를 설치하는 방법이 필요한 경우 github 릴리스 페이지에서 최신 버전의 .msi 설치 관리자를 가져와 시스템에 복사한 후 설치하고 사용하면 됩니다.

다음은 제가 사용하는 스크립트입니다.Dockerfile에 기반을 둔windows/servercoreArtifactory는 PowerShell Gallery입니다(onegetcdn.azureedge).순 용)

ARG ONEGET_NUGET_PROVIDER="Microsoft.PackageManagement.NuGetProvider-2.8.5.208.dll"
ARG ONEGET_PROVIDERS="https://artifactory/artifactory/generic-azureedge-onegetcdn/providers/"
 
RUN $ProviderPath = 'C:/Program Files/PackageManagement/ProviderAssemblies/'; `
    New-Item -ItemType "directory" -Path $ProviderPath -Force; `
    Invoke-WebRequest -Uri "${Env:ONEGET_PROVIDERS}${Env:ONEGET_NUGET_PROVIDER}" -OutFile "${ProviderPath}${Env:ONEGET_NUGET_PROVIDER}"; `
    Register-PSRepository -Name "artifactory-powershellgallery-remote" -SourceLocation "https://artifactory/artifactory/api/nuget/powershellgallery-remote"; `
    Unregister-PSRepository -Name PSGallery;

위치 및 dll 버전은 https://onegetcdn.azureedge.net/providers/providers.masterList.feed.swidtag 에서 볼 수 있습니다.

이 스레드의 어떤 옵션도 저에게 맞지 않았습니다.PowerShell Core 7.1.5를 사용하고 있습니다.$env에서 Windows Powershell Modules를 제거했습니다.PS 모듈 경로.기본적으로 환경 변수를 확인하고 "Windows PowerShell"이 있는 경로를 찾아 제거합니다.

Manager를 Nuget Package Manager를 .-Force다음 메시지를 무시하는 플래그:

Install-PackageProvider NuGet -Force

적어도 윈도우즈 Powershell(5.1)의 경우에는 보안 프로토콜에 대한 트릭을 사용할 필요가 없습니다.

언급URL : https://stackoverflow.com/questions/51406685/powershell-how-do-i-install-the-nuget-provider-for-powershell-on-a-unconnected

반응형