导语:在本篇文章中,我们会探索如何使用powershell来操作模块。这对我们来说是学习PowerShell的一个非常有趣和重要的部分,因为它在许多任务和操作的自动化方面将会为我们提供许多帮助。
介绍
随着我们这个系列文章的逐步深入,我们就越能发现powershell的强大之处,而这种强大只会越来越明显。
在本篇文章中,我们会探索如何使用powershell来操作模块。这对我们来说是学习PowerShell的一个非常有趣和重要的部分,因为它在许多任务和操作的自动化方面将会为我们提供许多帮助。
使用powershell模块
正如我们在前面的文章中看到的,模块是PowerShell里一个非常强大的概念。现在我们会来学习在渗透测试中如何创建和利用它们,特别是用于自动化日常任务。
首先,让我们记住模块的定义。Microsoft对模块的描述定义是这样的:
· “模块是包含PowerShell命令的包,例如cmdlets,提供程序,函数,工作流,变量和别名。”
· “编写命令的人可以使用模块来组织命令并与他人共享命令。接收模块的人可以将模块中的命令添加到他们的PowerShell会话中,并像内置命令一样使用它们。“ (微软官方文档定义)。
我们可以使用Get-Module 命令获取可用模块的列表:
该Get-Module命令可以帮助我们获取已导入到当前会话中的模块。在我们的示例中,我们使用此命令和-ListAvailable 选项来检索计算机上安装的模块,并可以在我们的会话中导入。添加选项 -All 使我们能够获取当前会话中所有可用模块的所有导出文件。
我们还可以使用Import-Module 命令非常简单地导入模块:
同时,我们也可以使用Remove-Module 命令将其删除,如下所示:
使用powershell编写模块
现在让我们谈谈如何使用PowerShell创建模块。
PowerShell上的模块的扩展名为“.psm1”。
我们首先创建一个示例模块。首先,我们将在psm1文件中写一个函数来创建我们的模块。
除了文件扩展名外,这个模块文件没有什么特别的,所以我们可以使用包含函数的普通PowerShell脚本并重命名它来创建psm1文件。是不是很简单?
下面我们将使用一个简单的函数。
这个函数是用来检查文件是否存在:
还有一个重要的注意事项:我们必须添加一个模块清单,将其称为模块。
清单只是添加有关模块的元数据。它包括以下信息:
· 作者信息
· 版本
· 自动加载模块
模块清单只是一个保存为psd1文件的哈希表,当我们导入数据时将加载它。
New-ModuleManifest cmdlet将通过为我们创建清单来帮助我们。
现在我们来生成第一个清单:
清单生成之后是这样的:
清单中最有趣的属性之一是FunctionsToExport 属性。它的默认值为*,导出所有函数,但我们也可以使用以下语法选择特定函数:
FunctionsToExport =“GetFunction” 。
最后,我们来谈谈RootModule。根模块参数会指示应运行哪个PowerShell模块文件。
不要忘了将所有文件放在同一个文件夹中,如下所示:
现在我们来进行导入:
在这个示例中,Import-Module命令会自动查找psm1文件。
好了,本篇文章差不多就是这样。
现在你已经知道如何使用powershell来操作模块了。你会发现这真的非常有用。
总结
powershell中模块的概念十分重要,而且对我们非常有帮助。
在下一篇文章中,我们将开始使用powershell进行实战利用,并且开始讨论使用PowerShell进行远程处理。
更多精彩内容,敬请期待。