Installing a .nupkg on an offline machine
The ability to find and install PowerShell modules from online sources like Nuget makes life for a Windows admin a smidge nicer. On the flipside, arbitrary trust of online package repositories and granting servers outbound internet access can be a nightmare for those tasked with protecting a network.
You might find yourself needing to install a PowerShell module (as a nupkg file) on a system with restricted (or no) internet access, as one of our security consultants found himself needing to do.
Here’s a quick guide on how to achieve this. If only it were as simple as Install-Package .\module.nupkg
!
Steps
- Run
Install-PackageProvider -Name NuGet -RequiredVersion 2.8.5.201 -Force
to install the provider from a computer with an internet connection. - After the install, you can find the provider installed in
C:\Program Files\PackageManagement\ProviderAssemblies
– copy the Nuget folder to external media or otherwise find a way to get it to your target system. - Place the nuget folder in
C:\Program Files\PackageManagement\ProviderAssemblies
on your target computer. - Start a new PowerShell session on the target computer to auto-load the package provider.
- Create a new folder in
C:\
namedPackages
- Copy your nupkg file(s) into
C:\Packages
- In PowerShell run
Register-PSRepository -Name Local -SourceLocation C:\Packages -InstallationPolicy Trusted
- You can list the packages available with
Find-Module -Repository Local
- Run
Install-Module -Name <YourModuleName>
where<YourModuleName>
is the name of your package as returned by the command in step 8.
Thanks
I put this together with information from trebleCode and Nova Sys Eng on StackOverflow. Thanks go out to those fine people.