Загрузка в корзину Amazon S3 с помощью PowerShell Core - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть скрипт, который отлично работает для загрузки в корзину S3 с Windows PowerShell, но он не работает с PowerShell Core.Согласно Amazon, большинство командлетов, которые работают в одном, должны работать в другом.

Я использую эту команду:

Write-S3Object -BucketName $bucketName -Folder $localDir -KeyPrefix $targetFolder -AccessKey $accessKey -SecretKey $secretKey -Recurse

Опять же, когда я пытаюсь запуститьКоманда PowerShell работает напрямую, как и ожидалось, но в PowerShell Core я получаю эту ошибку:

Write-S3Object : The term 'Write-S3Object' is not recognized as the name of a cmdlet, function, script file, or operable program.
Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:1 char:1
+ Write-S3Object -BucketName "cloud-storage-poc" -Folder "C:\Users\Admi ...
+ ~~~~~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Write-S3Object:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

1 Ответ

0 голосов
/ 01 февраля 2019

Для PowerShell Core вам необходимо явно импортировать модуль AWSPowerShell.NetCore перед выполнением сценария или команды.Из-за большого количества командлетов (более 5000 в настоящее время) в модуле мы в настоящее время не можем перечислить имена экспортированных командлетов в манифесте модуля и изучаем другие альтернативы (например, в будущем при создании модулей для каждой службы, но пока еще нет ETA).

Если предположить, что машина чиста, тогда

Install-Module AWSPowerShell.NetCore
Import-Module AWSPowerShell.NetCore
Write-S3Object ...

Должно работать на вас.Конечно, если у вас уже установлен правильный модуль, вы можете пропустить первую команду.Я настроил свои профили PowerShell для Windows и Core, чтобы они всегда выполняли импорт.

Почему для некоторых это работает в Windows, так как до середины прошлого года мы перечисляли экспортированные командлеты в манифесте.Однако, когда мы передали число 4000 командлетов в модуле, публикация в галерее PowerShell была заблокирована из-за скрытого ограничения и вынудила нас прекратить перечислять их.С экспортированными командлетами, перечисленными в манифесте, PowerShell не требует явного оператора импорта.

...