Windows PowerShell V2 Sessions and Debugging

This video demonstrates converting a Windows PowerShell script to a Windows PowerShell module.
See more info at
MSDN Code Gallery.
The video starts by introducing a simple script file, counter.ps1, with three functions and two variables.
The script file is dot sourced into the environment. All variables and functions are now in scope. The intent is to only have two of the functions in scope, with the rest being private implementation details.
Next, the file is renamed from counter.ps1 to counter.psm1 for the correct module extension. Using the
Import-Module cmdlet, the module is loaded into scope. It is demonstrated that the variables are private, however all functions are public. This is shown using
Get-Command -module counter to list the exported commands.
Before changing the module it is necessary to remove it from scope. This is accomplished using
Get-Module | Remove-Module to pipe any modules (only one in this sample) to be removed.
In order to hide certain functions, it is necessary to specific which are public using
Export-ModuleMember function_name. By specifying only the intended public functions, others remain private, only accessible from within the module.