Binary Modules
A binary module can be any assembly (.dll) that contains cmdlet classes. By default, all the cmdlets in the assembly are imported when the binary module is imported. However, you can restrict the cmdlets that are imported by creating a module manifest whose root module is the assembly. The CmdletsToExport key of the manifest can be used to export only those cmdlets that are needed.
The following simple binary module that contains three test cmdlets. When this module is imported, the three cmdlets will be available to the user. Note that there is no need to create a snap-in class.
Importing Snap-in Assemblies as Modules
Cmdlets and providers that exist in snap-in assemblies can be loaded as binary modules. When the snap-in assemblies are loaded as binary modules, the cmdlets and providers in the snap-in are available to the user. However the snap-in class in the assembly is ignored, and the snap-in is not registered. As a result, the snap-in cmdlets provided by Windows PowerShell cannot detect the snap-in even though the cmdlets and providers are available to the session.
In addition, any formatting or types files that are referenced by the snap-in cannot be imported as part of a binary module. To import the formatting and types files you must create a module manifest. See, How to Write a Module Manifest.