Importing PowerShell Modules from GAC DLLS in order to use their CmdLets
What I am writing here is nothing new, just a consolidation of attempted answers I found when trying to do as the title of this post describes. Now to set the stage, this is a DLL deployed as part of a SharePoint solution which is why it gets dropped to the GAC and then the CmdLets are used to configure the solution once the SharePoint WSPs are deployed.
Import-Module will take a full path to a DLL in the GAC or anywhere in order to use the CmdLets within it, but I didn’t want to be mucking with resolving the GAC path for a DLL, I just wanted to give it the assembly name without version and what not. In looking at other people comments to loading DLLs with partial name, the obvious “LoadWithPartialName” was mentioned, however that will load the DLL into memory, but doesn’t load them as modules for CmdLet use…
Chaining the two commands together does work nicely though:
$assembly = [System.Reflection.Assembly]::LoadWithPartialName(‘MyProject.PowerShell’)
Import-Module -Assembly $assembly
New-ObjectToPerformTask -Url $url
It’s nothing special, but a nice complete way to load PowerShell cmdlets using partial names from the GAC, so its great for SharePoint deployed DLLs.