How to install/update a powershell module from a l

2020-08-17 03:25发布

问题:

I need to install a PowerShell module (i.e. sqlserver) on one production box, however, the production server does not have any internet connection.

An alternative way I am using is to use save-module to save module files onto a shared folder and then copy the files from the shared folder directly to production server's PS module path

c:\program files\WindowsPowerShell\Modules

It works, but I am just wondering whether we can use the existing approach, i.e. install-module, something like

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

This requirement extends to update-module as well.

Using save-module and then copy & paste seems very unreliable because I have no idea whether install-module will actually do some DLL file registration or installation.

Can any PS gurus please give some idea how to do this, i.e. using install-module without internet connection?

Thanks in advance for your time.

PS: I know there is a post at SO but it does not help me.

回答1:

  1. In any shell (elevated or not):

    Register-PSRepository -Name 'myRepositoryName' -SourceLocation 'my folder'
    

    All .nupkg files inside your folder are now discoverable by Install-Module.

  2. In an elevated shell (Run as Administrator):

    Install-Module 'Some-Module' -Repository 'myRepositoryName'
    


回答2:

Eric's answer was helpful for me. I also added:

-InstallationPolicy Trusted

to the Register-PSRepository call. Taking a module and publishing it as a nuget package looks like this: Publish-Module -Name myModuleName -Repository myRepositoryName