In my previous blog article on this subject, I showed how to copy the PowerShell module manifest file from a server with the module you want to download the help for to the local computer to trick it into thinking the module was installed locally, but copying files can get messy and isn’t really a robust way of accomplishing that task.
The first method I used did get me thinking about this process though. If all the
does is to look for the Module manifest file somewhere in the PowerShell Module Path, then why not
$env:PSModulePath variable to the location of the modules on the servers you want to
save the help for instead of copying the manifest files?
On the Windows 8 computer I’m using, $env:PSModulePath looks like this by default:
As with my previous blog on this subject, this process is unsupported. I’m going to add the UNC path
location to the modules on my domain controller, SQL server, and IIS web server to this variable.
You could backup the current value of the variable by piping it to the
Out-File cmdlet, but the
changes to it will only exist for the lifetime of the current PowerShell session so saving the
current value is unnecessary.
I ended up with a space between each path, so I’ll use the replace method to remove them:
Nothing currently exists in the location I plan to save the help to:
I used the
Save-Help cmdlet and specified the
DestinationPath parameter. I also used the
parameter since I’d already tested this a couple of times and if you want to download the help more
than once a day, it’s necessary, but since several modules are duplicated in the path now, I
wouldn’t recommend using the
Force parameter otherwise you’ll end up downloading the same help
files multiple times and just overwriting them.
I can see that the help was downloaded for several modules that are not installed on the local computer:
Here’s where I verified the help files were actually saved to the specified destination. The first two in the list, ActiveDirectory and ADDSDeployment, are examples of modules that don’t exist on the local computer:
I’ve crossed out a phrase in the first paragraph because we’re actually downloading the help to a
network share (not to the local computer). The goal here is to download and save the PowerShell help
files to a network share from a machine that has Internet access. This allows servers that do not
have Internet access to update their PowerShell help by specifying the network share as the source
path when running the
The problem I’m working-around in this blog is being able to download the help files for modules
that do not exist on the computer the
Save-Help cmdlet is being run from, but do exist on servers
that don’t have Internet access. I would also recommend reading
of this blog article which gives more background information on the problem.