PowerShell中的模块和管理单元是非常相似的概念,很多管理员搞不清楚这两者的差别,差别其实非常小,但是从系统底层来看,差别在于系统耦合度,当需要管理与系统结合得非常紧密的时候,比如有非常多的exe和Dll 文件需要调用,这个时候就需要管理单元来实现业务的正常管理,当业务的耦合度和系统没有那么强,则使用模块进行管理。微软的大部分业务已经从紧耦合度向松耦合度过渡,目前大部分业务都是使用模块进行管理,图5.6所示为紧耦合和松耦合在结构上的不同。
图5.6 松耦合与紧耦合
如果希望从系统层面来理解管理单元和模块的差别,可以通过图5.7来获取答案。
图5.7 管理单元和模块在系统结构上的不同
管理单元相比模块,更接近系统的底层驱动层。管理单元需要安装和应用,对于系统环境的要求就比较高。而模块更加轻量化,我们可以在任何平台安装相关的模块,相比管理单元,对于环境的要求更少,对于业务的兼容性也比管理单元好很多。
如果希望获取当前PowerShell已经加载的模块,可以直接使用Get-Module命令获取当前已经加载的模块命令,默认情况下系统不会自动加载第三方模块,图5.8所示为没有加载第三方模块信息。
图5.8 获取当前已加载的模块信息
这里如果我们执行了QRCodeGenerator模块中的命令,那么QRCodeGenerator模块将会被自动加载进来。图5.9所示为加载模块后的所有信息。
图5.9 加载QRcodeGenerator 模块后的信息
如果希望更加深入地了解加载模块的更详细信息,包含模块的路径、模块版本和模块的类型,可以通过执行“Get-Module |FL”命令清楚地了解加载到PowerShell 环境的模块中的具体信息,图5.10所示为安装模块的具体信息,包括模块名称、模块安装路径、模块描述、模块版本等。
图5.10 已经加载的模块具体信息
在进行模块部署过程中,我们有几类不同的部署方式:方法1是通过Install-Module命令来完成模块的安装,方法2是将模块下载到本地解压缩。方法1安装的模块我们可以通过如下的命令来获取,图5.11所示为命令执行后的结果。
图5.11 通过Install-Module命令安装模块列表
如果希望更加深入地了解已经安装的PowerShell 模块的各类信息,包含模块的路径、模块版本和模块的类型,可以通过执行“Get-InstalledModule |FL”命令清楚地了解加载到PowerShell 环境的模块中的具体信息,图5.12所示为安装模块的具体信息,包括模块名称、模块安装路径、模块描述、模块版本等。
图5.12 获取通过Install-Module安装模块