Как установить/обновить модуль powershell из локальной папки — настроить внутренний репозиторий модулей

Мне нужно установить модуль PowerShell (т. е. sqlserver) на одном производственном компьютере, однако производственный сервер не имеет подключения к Интернету.

Альтернативный способ, который я использую, - использовать save-module для сохранения файлов модулей в общую папку, а затем копировать файлы из общей папки непосредственно в путь модуля PS производственного сервера.

c:\program files\WindowsPowerShell\Modules

Это работает, но мне просто интересно, можем ли мы использовать существующий подход, то есть модуль установки, что-то вроде

install-module -name sqlserver -repository "my shared folder"

Это требование распространяется и на модуль обновления.

Использование save-module, а затем копирование и вставка кажется очень ненадежным, потому что я понятия не имею, действительно ли install-module выполнит регистрацию или установку DLL-файла.

Может ли кто-нибудь из гуру PS подсказать, как это сделать, то есть с помощью модуля установки без подключения к Интернету?

Спасибо заранее за ваше время.

PS: я знаю, что в SO есть сообщение , но оно мне не помогает .


person jyao    schedule 23.04.2018    source источник
comment
kevinmarquette.github.io/   -  person TessellatingHeckler    schedule 23.04.2018
comment
@TessellationHeckler, после первого сканирования это кажется очень многообещающим. Я попробую позже. С другой стороны, не могли бы вы написать что-нибудь в разделе ответов вместо комментариев, чтобы я мог проголосовать за вас. Спасибо еще раз !   -  person jyao    schedule 23.04.2018


Ответы (2)


  1. В любой оболочке (повышенной или нет):

     Register-PSRepository -Name 'myRepositoryName' -SourceLocation 'C:\MyExampleFolder'
    

    Все .nupkg файлы в вашей папке теперь могут быть обнаружены Install-Module.

  2. В расширенной оболочке (запуск от имени администратора):

     Install-Module 'Some-Module' -Repository 'myRepositoryName'
    
person Eric Eskildsen    schedule 29.08.2019
comment
Это будет работать, однако SourceLocation должен быть как минимум сетевым ресурсом - у меня это не работало, когда я использовал локальный путь. - person Gucu112; 01.12.2020
comment
@ Gucu112 Gucu112 Неправда, вы определенно можете использовать локальный путь. Какое сообщение об ошибке вы получили? - person Eric Eskildsen; 02.12.2020
comment
Разница между install-module и import-module кажется, что import-module может устанавливаться только с локального пути, тогда как install-module можно установить как локально, так и удаленно. - person Timo; 16.12.2020
comment
@ Тимо Не совсем так. Import-Module делает командлеты модуля доступными для вас в вашем текущем сеансе PowerShell. Install-Module копирует файлы модуля в папку. Импортировать — это все равно, что класть еду на прилавок, чтобы сделать сэндвич, тогда как установка — это как ходить по магазинам и приносить еду домой из магазина. - person Eric Eskildsen; 05.03.2021
comment
Работал для меня здесь! На моем сервере нет доступа в Интернет, я вручную скачал файл nupkg PowerShell Galley и поместил его в папку C:\Temp, зарегистрировал PSRepository в C:\Temp как SourceLocation и установил модуль. Большое спасибо!! - person Ricardo Zambon; 01.07.2021

Ответ Эрика был полезен для меня. Я также добавил:

-InstallationPolicy Trusted

на вызов Register-PSRepository. Взятие модуля и публикация его в виде пакета nuget выглядит так: Publish-Module -Name myModuleName -Repository myRepositoryName

person PeterDaniels    schedule 19.05.2020