Assembly.psm1

function Initialize-Assembly
{
       param
       (
              [Parameter(Mandatory=$true, Position=0, ParameterSetName="Single")]
              [ValidateNotNullOrEmpty()]
              [string] $Name,

              [Parameter(Mandatory=$true, Position=0, ParameterSetName="Array")]
              [ValidateNotNullOrEmpty()]
              [string[]] $Names

       )
      
       switch($PSCmdlet.ParameterSetName)
       {
              "Single"
              {
                     [void][System.Reflection.Assembly]::LoadWithPartialName($Name)
                     break
              }
              "Array"
              {
                     $Names |% { [void][System.Reflection.Assembly]::LoadWithPartialName($_) }
                     break
              }
       }
}

function Test-AssemblyLoaded
{
       param
       (
              [Parameter(Mandatory=$true, Position=0, ParameterSetName="Single")]
              [ValidateNotNullOrEmpty()]
              [string] $Name,

              [Parameter(Mandatory=$true, Position=0, ParameterSetName="Array")]
              [ValidateNotNullOrEmpty()]
              [string[]] $Names

       )

       switch($PSCmdlet.ParameterSetName)
       {
              "Single"
              {
                     (Get-AssemblyLoaded |? {$_ -match $Name}) -ne $null
                     break
              }
              "Array"
              {
                     $result = $true
                     $assemblies = Get-AssemblyLoaded
                     $Names |% {
                           $assembly = $_
                           if(($assemblies |? {$_ -match $assembly}) -eq $null)
                           {
                                  $result = $false
                           }
                     }

                     $result
                     break
              }
       }
}

function Get-AssemblyLoaded
{
       [System.AppDomain]::CurrentDomain.GetAssemblies()
}

Export-ModuleMember *Assembly*