programing

업데이트 모듈에서 리포지토리를 찾을 수 없음

goodsources 2023. 8. 14. 22:49
반응형

업데이트 모듈에서 리포지토리를 찾을 수 없음

Windows 10 및 Powershell 5.1을 사용하고 있습니다.

Get-PSRepository 결과:

PS 갤러리 신뢰할 수 없음 https://www.powershellgallery.com/api/v2

반면 Update-Module은 오류를 반환합니다.

패키지 관리\Install-Package : 'https://www.powershellgallery.com/api/v2/' ' 리포지토리를 찾을 수 없습니다.Get-PSRepository를 사용하여 사용 가능한 모든 리포지토리를 확인합니다.C:\Program Files\에서Windows PowerShell\Modules\powershellget\2.0.1\PSModule.psm1:13000 문자:20 +...$sid = 패키지 관리\설치-패키지 @PSBoundParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~정보: 개체를 찾을 수 없음: (Microsoft.전원...패키지 설치:InstallPackage) [Install-Package], 예외 + FullyQualifiedErrorId: SourceNotFound, Microsoft.PowerShell.패키지 관리.Cmdlets.패키지 설치

어떻게 고칠지 생각나는 거 있어요?

TL;DR

PowerShell에 등록된 PSGallery 저장소의 URL이 https://www.powershellgallery.com/api/v2/ 을 가리킬 때 사용된 것처럼 보이지만, 어느 시점에서 https://www.powershellgallery.com/api/v2 으로 변경되었습니다(마지막에 슬래시가 누락됨).

λ  Get-PSRepository

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2

이전 URL에서 설치된 모든 모듈이 이제 업데이트되지 않습니다.PowerShell 갤러리에서 다시 설치하면 저장소 URL이 업데이트되어 모듈이 정상적으로 업데이트될 수 있습니다.다음 명령을 사용하여 이전 URL을 가리키는 모든 모듈을 다시 설치할 수 있습니다.

Get-InstalledModule `
| ? { $_.Repository -eq 'https://www.powershellgallery.com/api/v2/' } `
| % { Install-Package -Name $_.Name -Source PSGallery -Force -AcceptLicense }

풀 런 다운

저는 이 엄청나게 성가신 문제에 직접 부딪혔습니다.오류 메시지를 통해 다음과 같은 몇 가지 사항을 확인할 수 있습니다.

패키지 관리\Install-Package : 'https://www.powershellgallery.com/api/v2/' ' 리포지토리를 찾을 수 없습니다.

  1. PowerShellGet\Update-Module궁극적으로 책임을 떠넘기다PackageManagement\Install-Package
  2. https://www.powershellgallery.com/api/v2/' 에서 저장소를 찾고 있습니다.

중입니다.Get-PSRepository산출량에 : 계기수율따라에내:

Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Trusted              https://www.powershellgallery.com/api/v2

저장소가 있는 것처럼 보입니다. 다만, 없을 수도 있습니다.후행 슬래시를 기록합니다.그게 가능할까요?Install-Package에서 의저찾중입다가 .SourceLocation그게 정확히 그 끈과 일치합니까?변경해 보겠습니다.SourceLocationPS 갤러리의 경우:

Set-PSRepository -Name PSGallery -SourceLocation https://www.powershellgallery.com/api/v2/ -InstallationPolicy Trusted

패키지 관리\Set-PackageSource : PSGallery 저장소에 미리 정의된 위치가 있습니다.'Location, NewLocation 또는 SourceLocation' 매개 변수는 허용되지 않습니다. 'Location, NewLocation 또는 SourceLocation, NewLocation 또는 SourceLocation' 매개 변수를 제거하십시오.C:\Program Files\에서Windows PowerShell\모듈\PowerShellGet\2.0.4\PSModule.psm1:11768 문자:17 + ...$208 = 패키지 관리\세트-패키지소스 @PSBoundParameters + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~정보: 잘못된 인수: (https://www.pow...ery.com/api/v2/ :String) [Set-PackageSource], 예외 + FullyQualifiedErrorId : 매개 변수가 허용되지 않습니다.PSGallery, Add-PackageSource, Microsoft를 사용합니다.PowerShell.패키지 관리.Cmdlets.패키지 원본 설정

그건 효과가 없었어요.PSGallery 저장소가 사용자의 안전을 위해 보호되는 것 같습니다.

다른 리포지토리를 추가하고 모듈을 업데이트해 보겠습니다.

Register-PSRepository -Name PSGallery1 -SourceLocation https://www.powershellgallery.com/api/v2/ -InstallationPolicy Trusted
Update-Module -Name pester -Force

보세요, 오류가 없습니다.효과가 있습니다!

설치된 모듈 목록을 가져오면 리포지토리가 혼합되어 있는 것을(를) 확인할 수 있습니다.

Get-InstalledModule | Select Name, Repository | FT -AutoSize

Name                         Repository
----                         ----------
7Zip4Powershell              PSGallery 
AWSPowerShell                PSGallery 
cChoco                       PSGallery1
dbatools                     PSGallery 
DLMAutomation                PSGallery1
InvokeBuild                  PSGallery1
Microsoft.PowerShell.Archive PSGallery1
PackageManagement            PSGallery 
Pester                       PSGallery1
posh-git                     PSGallery1
powershell-yaml              PSGallery1
PowerShellGet                PSGallery 
PowerUpSQL                   PSGallery1
psake                        PSGallery1
PsHosts                      PSGallery1
psTrustedHosts               PSGallery1
ReverseDSC                   PSGallery1
SeeShell                     PSGallery1
SqlServer                    PSGallery1
TunableSSLValidator          PSGallery1
xSmbShare                    PSGallery1
xWebAdministration           PSGallery1

https://www.powershellgallery.com/api/v2/! 연결된 PSGallery1에서 설치된 모든 모듈을 보십시오. 지금까지 제 컴퓨터에는 PSGallery1이라는 저장소가 없었습니다. 제가 설치한 모든 모듈은 PSGallery에서 왔습니다.제 추측으로는 PSGallery 저장소가 https://www.powershellgallery.com/api/v2/ 을 가리키고 있었고 의도적이든 아니든 어느 시점에서 https://www.powershellgallery.com/avp/v2; breaking으로 변경된 것 같습니다.Update-ModuleURL에서 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 사용하여 모듈을 다시 설치하면Install-Package업데이트된 PSGallery 저장소에서 모든 것이 자동으로 해결되고 PSGallery1 저장소를 제거할 수 있습니다.

이전 URL(PSGallery1)에서 배포된 모든 모듈을 업데이트합니다.

Get-InstalledModule `
| ? { $_.Repository -eq 'PSGallery1' } `
| % { Install-Package -Name $_.Name -Source PSGallery -Force -AcceptLicense }

중입니다.Get-InstalledModule다시 산출량:

Name                         Repository
----                         ----------
7Zip4Powershell              PSGallery
AWSPowerShell                PSGallery
cChoco                       PSGallery
dbatools                     PSGallery
DLMAutomation                PSGallery
InvokeBuild                  PSGallery
Microsoft.PowerShell.Archive PSGallery
PackageManagement            PSGallery
Pester                       PSGallery
posh-git                     PSGallery
powershell-yaml              PSGallery
PowerShellGet                PSGallery
PowerUpSQL                   PSGallery
psake                        PSGallery
PsHosts                      PSGallery
psTrustedHosts               PSGallery
ReverseDSC                   PSGallery
SeeShell                     PSGallery
SqlServer                    PSGallery
TunableSSLValidator          PSGallery
xSmbShare                    PSGallery
xWebAdministration           PSGallery

좋습니다! 이제 PSGallery1 저장소를 제거하고 모듈을 업데이트해 보겠습니다.

Unregister-PSRepository PSGallery1
Update-Module -Name pester -Force

성공!모듈이 오류 없이 업데이트되었습니다.

이 고장났는지, 또는 PSGallery의 URL인지 잘.Install-Package하지만 이전 URL에서 설치된 모든 모듈을 다시 설치하면 모든 것이 해결되는 것 같습니다.

여러 가지 시도를 해본 결과, NuGet 패키지 공급자를 강제로 다시 설치하는 것이 Update-Module의 문제를 해결한 것 같습니다.

상승된 PowerShell 세션에서 다음을 실행합니다.

Install-PackageProvider Nuget –Force

참고로, 저는 제가 최고의 성공을 거두었을 때 여기에 있었습니다: https://learn.microsoft.com/en-us/powershell/scripting/gallery/installing-psget

저도 같은 문제가 있었고 이 질문을 발견했습니다.제이슨 보이드(위)가 쓴 글을 다 써봤지만 소용이 없었습니다.

좀 더 검색해보니 이 링크가 https://community.spiceworks.com/topic/2265662-powershell-get-download-problem 입니다.

TLS 1.0이 원인이 될 수 있다고 말했습니다.달리는 것을 추천합니다.

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

그 후, 저는 제 패키지를 업데이트할 수 있었습니다.

위의 답변들의 조합이 저를 위해 그것을 고쳤습니다.

PS> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 
PS> Install-PackageProvider Nuget –Force
PS> Install-Module -Name PSWindowsUpdate

의 이전 버전을 제거해야 할 수 있습니다.PSWindowsUpdate먼저 새 버전을 설치합니다.

할 수 있습니다.-force두 가지 버전을 나란히 설치할 수도 있지만, 그것은 아마도 최선의 생각은 아닐 것입니다.

Windows PowerShell 5.1.17134.407에도 동일한 문제가 있으며 PowerShell 6.1에서 동일한 시스템에서 테스트했습니다.업데이트-모듈은 윈도우즈 PowerShell 및 PowerShell 모두에서 동일한 버전의 PowerShell Get 모듈과 함께 PowerShell 6.1에서 예상대로 작동합니다.따라서 Windows PowerShell에서만 문제가 발생하는 것으로 보이며 추가 테스트 없이 추측할 수 있는 문제는 Windows PowerShell에서 실행할 때 PowerShell Get 모듈 자체의 Update-Module 코드 내에서 발생하는 문제입니다.

Update-Module을 사용할 수 있는 솔루션은 없지만 해결 방법으로 -AllowClobber 매개 변수 대신 Install-Module을 사용할 수 있습니다.Update-Module과 마찬가지로 이 오류로 인해 실패하지 않습니다.그리고 적어도 지금 당장은 업데이트 모듈이 실제로 내 테스트 및 https://github.com/PowerShell/PowerShellGet/issues/213 에 따라 설치된 이전 버전과 함께 새 버전을 나란히 설치하기 때문에 최종 결과는 동일할 것입니다.

...

추가 테스트를 수행한 후 테스트 중인 시스템을 재부팅했습니다.재부팅 후 Windows PowerShell 5.1의 Update-Module 문제가 해결되었습니다. 이제 Update-Module이 예상대로 작동합니다.재부팅이 문제를 해결했다고는 단언할 수 없지만, 이제 해결되었습니다.

저는 이것을 시도했지만 PSGaller2를 실행했습니다.그래서 저는 해결책을 더 찾아보았습니다.VPN/Proxy 환경에 있기 때문에 작동하도록 업데이트를 받지 못했습니다.제가 이걸 했을 때 효과가 있었습니다.

$webclient=New-Object System.Net.WebClient
$webclient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials

비슷한 문제를 발견했습니다.저의 경우, TLS 때문에 발생한 일입니다.

문제를 해결하기 위해 다음 단계를 수행했습니다: 1.64비트에 강력한 암호화를 설정합니다.Net Framework(버전 4 이상) Set-ItemProperty -Path 'HKLM:\SOFTWOW6432Node\Microsoft.NetFramework\v4.0.30319' - 이름 'SchUseStrongCrypto' - 값 '1' - 유형 Dword

  1. 32비트에 강력한 암호화를 설정합니다.Net Framework(버전 4 이상) Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft.NetFramework\v4.0.30319' - 이름 'SchUseStrongCrypto' - 값 '1' - 유형 Dword

  2. PS 콘솔 다시 시작

  3. [Net]을 사용하여 지원되는 프로토콜을 확인합니다.ServicePoint Manager]:: 보안 프로토콜

  4. 기본 레지스터 - PS 저장소 - 기본값 등록

사용해 보십시오.

[System.Net.WebRequest]::DefaultWebProxy.Credentials = System.Net.CredentialCache]::DefaultCredentials

get-psrepository

register-psrepository -default

수정:

  1. 설치-모듈 - 이름 PowershellGet - 리포지토리 PS 갤러리 - Force
  2. 기존 PowerShell 또는 ISE 세션을 닫고 새 세션을 시작합니다.
  3. 업데이트-모듈

저에게 효과가 있었던 코드는 다음과 같습니다.

powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" 

$env:Path += ";C:\ProgramData\chocolatey\bin"

언급URL : https://stackoverflow.com/questions/53358723/unable-to-find-repository-on-update-module

반응형