It's a great feature and of course there are a lot of
modules out there for different applications and services. As you install new
roles and features that use their own set of modules the installer adds those
modules into the list, so by default the PowerShell ISE modules list contains
all the modules relevant to the local installation.
But what if you want to write your script and insert
cmdlets into it on a machine that doesn't have those roles or features installed?
You could install the relevant management pack, but that seems somewhat
overkill to me.
The other option is to simply copy the relevant files
from a machine that already has them.
All of the module files installed on a machine can be
found in :
c:\windows\system32\WindowsPowerShell\v1.0\Modules\
with an individual folder for each module installed.
These obviously get loaded when PowerShell ISE loads.
To make these available on another machine, for instance
making the DNS Server module show up on your desktop machine, simply copy the
relevant folder(s) (in this case DnsServer) from a server that it's installed
on, into the modules folder on your target machine (your desktop).
The next time you load the PowerShell ISE you'll find the
module and its list of cmdlets listed and available for use. This way on one
machine you can have all your required modules, be they SQL Server, Exchange
Server, Active Directory, DNS Server etc on a single machine.
Update:
Update:
Just to avoid confusion, my intention when finding this
method was simply to allow me to write the code on my local machine, NOT to
allow me to execute the cmdlets locally. Using the -Computer parameter to
specify the machine to run the command against won't work, since your local
machine is missing the required dll's. That said, if you've established a
connection to the remote server, eg using Enter-PSSession, then the cmdlets
generated on your local machine can be run since you're using the dll's on the
remote machine not the local ones.