Question:
I’ve a machine (v3, internet, no admin access) which I used to download WMF 5.0 and set up another machine(v5, no internet, admin access). Now, I want to use some modules from PowerShellGet on the machine running v5 but no internet connection.
I need an option to download *.psm1 file which I can then copy over and use.
Just like we have options to download from GitHub.
Anyone with a similar issue and any workarounds ?
Answer:
Install the Package Management Module on your PowerShell 3 machine, and then use Save-Module …
Or set up ProGet somewhere “on the edge” of your network, and have it mirror the modules you want from the public PowerShellGallery for your internal-only clients.
Failing that, just build your own download URL:
1 2 |
https://www.powershellgallery.com/api/v2/package/$Name/$Version |
You can even generate an OData proxy module, or just use invoke-restmethod to search:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function Find-Module { param($Name) invoke-restmethod "https://www.powershellgallery.com/api/v2/Packages?`$filter=Id eq '$name' and IsLatestVersion" | select-Object @{n='Name';ex={$_.title.'#text'}}, @{n='Version';ex={$_.properties.version}}, @{n='Uri';ex={$_.Content.src}} } function Save-Module { param( [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)] $Name, [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)]$Uri, [Parameter(ValueFromPipelineByPropertyName=$true)]$Version="", [string]$Path = $pwd ) $Path = (Join-Path $Path "$Name.$Version.nupkg") Invoke-WebRequest $Uri -OutFile $Path Get-Item $Path } |
So now you can just do the same as with the official module:
1 2 |
Find-Module Pester | Save-Module -Path ~\Downloads |