如何创建 PowerShell 模块?

Share ideas, strategies, and trends in the crypto database.
Post Reply
roseline371274
Posts: 944
Joined: Mon Dec 23, 2024 8:18 am

如何创建 PowerShell 模块?

Post by roseline371274 »

打开记事本。使用 PSM1 扩展名保存文件。完成。

不,真的,就是这样。这就是创建脚本模块所需的全部内容。当然,它不会是一个非常实用的模块,但从技术上讲它是一个脚本模块。不过,让我们集中精力于一些更有用的东西。示例始终是展示概念的好方法,因此让我们创建一个模块来管理分区中的房屋。这不是一个实际的示例(至少在 PowerShell 团队弄清楚如何将 PowerShell 集成到物理世界之前不是),但它将展示模块的一些功能。



我拥有创建新房屋、查找我创建的所有房屋、修改房屋 塞浦路斯whatsapp 数据 以及最终移除房屋所需的所有功能。我使用此模块管理的房屋恰好位于“花式分区”社区,因此最好将其设置为顶部的模块变量。这样,我就可以在任何函数中引用该变量。

因为我与承包商共享此模块,所以我不希望他们在未经我许可的情况下建造任何新房屋或拆除任何房屋,因此我只允许他们使用Get-*函数和Set-*函数。我希望我的承包商能够知道我们将在哪个社区工作,因此我允许他们在 PowerShell 控制台中查看$Neighborhood的值。

如何使用 PowerShell 模块?
我已经创建了房屋模块,并将其命名为House.psm1。现在我想让我的承包商使用它,所以我将它放在我网络上名为HOMESERVERfileshare的共享文件夹中。然后我告诉每个承包商打开他们的 PowerShell 控制台并导入它。



导入模块会将所有功能和变量带入每个承包商的 PowerShell 会话。



您可以看到他们可以运行Get-House和Set-House,但是当他们尝试运行 Remove-House 时,PowerShell 会抛出错误。这是因为 PowerShell 无法识别此功能,因为我不允许它加载到当前会话中。此时,他们仍然可以毫无问题地使用此模块。但是,如果他们关闭控制台并再次打开它,Remove-House功能将不可用。

每当您运行 Import-Module(或使用PowerShell 的自动加载功能)时,它只会在当前会话中加载模块。它不会再次加载。承包商必须再次加载模块,或者最好将模块放入 PsModulePath 中,以便下次需要 House 函数时自动加载。

这应该可以帮助您开始使用模块。但是,PowerShell 模块还提供许多其他出色的功能。如果您想更深入地了解模块,我发现涵盖模块几乎所有功能的最佳资源名为“深入兔子洞:PowerShell 模块和封装”。这是一篇较旧的文章,但很多内容至今仍然适用。
Post Reply