Accessing Hidden Module Members

Modules in PowerShell v.2 can declare which functions, variables, aliases etc. are public and visible to the caller and which ones are hidden. With a trick, you can also access hidden members. Let's assume you have saved the following module as example.psm1:

$internal = 1
$external = 2
function Test-Function1 {
"I am function 1"
}

function Test-Function2 {
"I am function 2"
}

Export-ModuleMember -function Test-Function1 -Variable external

You need to import this module with a reference to gain access to hidden members:

$module = Import-Module path_to_module\example.psm1 -passThru

Now, you can submit a script block to the module, which executes in its private context and has access to all members, regardless of what Export-ModuleMember has declared public:

& $module { "The hidden variable INTERNAL contains: $internal }

Twitter This Tip! ReTweet this Tip!


Posted Sep 18 2009, 08:00 AM by ps1
Concentrated Tech NSoftware Dell Compellent Sponsored by Idera and Concentrated Tech and NSoftware and Dell Compellent
Copyright 2011 PowerShell.com. All rights reserved.