Я пытался запустить сценарий PowerShell, и после этого я получаю сообщение о том, что требуется поставщик NuGet.
NuGet provider is required to continue
This version of PowerShellGet requires minimum version '2.8.5.201' of NuGet provider to publish an item to NuGet-based
repositories. The NuGet provider must be available in 'C:\Program Files\PackageManagement\ProviderAssemblies' or
'C:\Users\timothy.granata\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider
by running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install
and import the NuGet provider now?
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"):
Если я ввожу Y
, возвращается ошибка:
Find-Module: NuGet provider is required to interact with NuGet-based repositories. Please ensure that '2.8.5.201' or newer version of NuGet provider is installed.
Если я попытаюсь запустить Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
, как это рекомендуется, я также получаю сообщение об ошибке:
Install-PackageProvider: Unable to find repository with SourceLocation ''. Use Get-PSRepository to see all available repositories.
И, наконец, если я запускаю Get-PSRepository
, то тоже ошибки:
Get-PackageSource: Unable to find module providers (PowerShellGet).
В сценарии, который я пытаюсь отладить, код, который, похоже, вызывает это приглашение, — Install-AWSToolsModule SecurityToken -Force
. Окружающий код выглядит так:
if (-not (Get-Module AWS.Tools.Installer -ListAvailable)) {
Install-Module AWS.Tools.Installer -Force
}
Install-AWSToolsModule SecurityToken -Force
Get-AWSCredential -ListProfileDetail | ForEach-Object {
Remove-AWSCredentialProfile -ProfileName $_.ProfileName -Force
}
Я пытался:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Я не уверен, что еще я могу попробовать на данный момент. Как установить поставщика NuGet для использования с PowerShell 7.3?
@DougMaurer эта команда возвращает Cmdlet Get-PackageProvider 1.4.8.1 PackageManagement
@DougMaurer Я также добавил в сценарий код, который запускает подсказку, хотя я не думаю, что это действительно имеет значение для рассматриваемой проблемы.
Пытаться
$sourceArgs = @{
Name = 'nuget.org'
Location = 'https://api.nuget.org/v3/index.json'
ProviderName = 'NuGet'
}
Register-PackageSource @sourceArgs
Get-PackageProvider | where name -eq 'nuget' | Install-PackageProvider
РЕДАКТИРОВАТЬ
Возможно, попробуйте
Invoke-WebRequest 'https://www.powershellgallery.com/api/v2/package/PackageManagement/1.4.8.1' -OutFile $env:temp\nuget.zip
И подтвердите, что вы можете загрузить пакет nuget. Если да, то попробуй
Expand-Archive $env:temp\nuget.zip -DestinationPath 'C:\Program Files\PowerShell\7\Modules\PackageManagement' -Force
Import-Module PackageManagement -Verbose -Force
Кажется, выдает похожие ошибки: i.stack.imgur.com/fvmFT.png Коллега порекомендовал что-то похожее, я думаю, на самом деле: Register-PackageSource -Name MyNuGet -Location https://www.nuget.org/api/v2 -ProviderName NuGet
как видно на этой странице
@ТимотиГ. это прискорбно.
Я попробовал то, что предложило ваше редактирование - в итоге он экспортировал и импортировал журнал командлетов в соответствии с подробными журналами i.stack.imgur.com/5JdF5.png . Кажется, загруженные модули поступают из моей папки OneDrive. Интересно, имеет ли это какое-то отношение к этому? На одной странице, на которую я ссылался в своем вопросе, упоминалось что-то о перенаправлениях OneDrive, что усложняет их ситуацию. Тем не менее, после этого ошибки не исчезают.
Кажется, что-то с OneDrive действительно отбрасывало это, как я задавался вопросом в своем одном комментарии . Я нашел этот пост , в котором говорилось (из какой-то документации Microsoft):
Местоположение CurrentUser для конкретного пользователя в Windows — это папка PowerShell\Modules, расположенная в папке «Документы» в вашем профиле пользователя... Microsoft OneDrive также может изменить расположение папки «Документы».
Я побежал $env:PSModulePath
и, конечно же, это была локация OneDrive. В итоге я сделал то, что предложил ответ на этот пост, и исключил каталог PowerShell из OneDrive. После этого мой скрипт теперь работает (он не выдает ошибок или этой подсказки). После этого местоположение OneDrive по-прежнему отображается из команды $env:PSModulePath
, но я предполагаю, что оно возвращается к следующему местоположению модулей, если не может найти каталог.
Что показывает
Get-Command Get-PackageProvider
?