导语:在本篇文章中,我们会探索如何使用powershell来操作模块。这对我们来说是学习PowerShell的一个非常有趣和重要的部分,因为它在许多任务和操作的自动化方面将会为我们提供许多帮助。

介绍

随着我们这个系列文章的逐步深入,我们就越能发现powershell的强大之处,而这种强大只会越来越明显。

在本篇文章中,我们会探索如何使用powershell来操作模块。这对我们来说是学习PowerShell的一个非常有趣和重要的部分,因为它在许多任务和操作的自动化方面将会为我们提供许多帮助。

使用powershell模块

正如我们在前面的文章中看到的,模块是PowerShell里一个非常强大的概念。现在我们会来学习在渗透测试中如何创建和利用它们,特别是用于自动化日常任务。

首先,让我们记住模块的定义。Microsoft对模块的描述定义是这样的:

· “模块是包含PowerShell命令的包,例如cmdlets,提供程序,函数,工作流,变量和别名。”

· “编写命令的人可以使用模块来组织命令并与他人共享命令。接收模块的人可以将模块中的命令添加到他们的PowerShell会话中,并像内置命令一样使用它们。“ (微软官方文档定义)。

我们可以使用Get-Module 命令获取可用模块的列表:

1.png

该Get-Module命令可以帮助我们获取已导入到当前会话中的模块。在我们的示例中,我们使用此命令和-ListAvailable 选项来检索计算机上安装的模块,并可以在我们的会话中导入。添加选项 -All 使我们能够获取当前会话中所有可用模块的所有导出文件。

我们还可以使用Import-Module 命令非常简单地导入模块:

2.png

同时,我们也可以使用Remove-Module 命令将其删除,如下所示:

3.png

使用powershell编写模块

现在让我们谈谈如何使用PowerShell创建模块。

PowerShell上的模块的扩展名为“.psm1”。

我们首先创建一个示例模块。首先,我们将在psm1文件中写一个函数来创建我们的模块。

除了文件扩展名外,这个模块文件没有什么特别的,所以我们可以使用包含函数的普通PowerShell脚本并重命名它来创建psm1文件。是不是很简单?

下面我们将使用一个简单的函数。

这个函数是用来检查文件是否存在:

4.png

还有一个重要的注意事项:我们必须添加一个模块清单,将其称为模块。

清单只是添加有关模块的元数据。它包括以下信息:

· 作者信息

· 版本

· 自动加载模块

模块清单只是一个保存为psd1文件的哈希表,当我们导入数据时将加载它。

New-ModuleManifest cmdlet将通过为我们创建清单来帮助我们。

现在我们来生成第一个清单:

5.png

6.png

清单生成之后是这样的:

7.png

清单中最有趣的属性之一是FunctionsToExport 属性。它的默认值为*,导出所有函数,但我们也可以使用以下语法选择特定函数:

FunctionsToExport =“GetFunction” 。

最后,我们来谈谈RootModule。根模块参数会指示应运行哪个PowerShell模块文件。

不要忘了将所有文件放在同一个文件夹中,如下所示:

8.png

现在我们来进行导入:

9.png

在这个示例中,Import-Module命令会自动查找psm1文件。

好了,本篇文章差不多就是这样。

现在你已经知道如何使用powershell来操作模块了。你会发现这真的非常有用。

总结

powershell中模块的概念十分重要,而且对我们非常有帮助。

在下一篇文章中,我们将开始使用powershell进行实战利用,并且开始讨论使用PowerShell进行远程处理。

更多精彩内容,敬请期待。

源链接

Hacking more

...