PowerShell 创建迷你模块 1


每一个PowerShell的函数都可以通过一行代码转换成一个脚本模块。我们可以打开ISE编辑器创建一个函数来测试这个功能。

function Get-BIOS
{  param($ComputerName, $Credential)
   Get-WmiObject -Class Win32_BIOS @PSBoundParameters
} 

名称为Get-BIOS 的函数会获取一个计算机的BIOS信息。该函数支持两个参数,一个是计算机名称(ComputerName),一个是用户凭据(Credential)。第二个参数主要是为了支持访问远程机器。接下来,我们将这个函数转化成一个模块。

PS> $name = 'Get-BIOS'
PS> New-Item -Path $home\Documents\WindowsPowerShell\Modules\$name\$name.psm1 -ItemType File -Force -Value "function $name { $((Get-Item function:\$name).Definition) }" 

上面的命令执行的关键点在于$name 中包含了我们的函数名,而这个函数名本身定义的内容已经包含在内存中了,所以会自动填充。结果则是在$home\Documents\WindowsPowerShell\Modules中创建一个PSM1的文件,这样就可以通过Get-Module来获取它,并且在PowerShell 3.0中还会自动加载这些模块,并且会自动探测这些模块中定义的函数,重新打开一个控制台来测试:

PS C:\Users\Mosser> Get-Module  -Name Get-BIOS

ModuleType Name                                ExportedCommands
---------- ----                                ----------------
Script     Get-BIOS                            Get-BIOS

PS C:\Users\Mosser> Get-BIOS


SMBIOSBIOSVersion : J01 v02.15
Manufacturer      : Hewlett-Packard
Name              : Default System BIOS
SerialNumber      : CNG2078HK8
Version           : HPQOEM - 1072009

原文链接:Creating “Mini-Modules”

本文链接: https://www.pstips.net/create-mini-module.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

一条评论 “PowerShell 创建迷你模块

  • Kevin

    发生了错误
    Get-Item : Cannot find path ‘Function:\Get-BIOS’ because it does not exist.
    At line:1 char:125
    + … e -Force -Value “function $name { $((Get-Item function:\$name).Defini …
    + ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (Function:\Get-BIOS:String) [Get-Item], ItemNotFoundException
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetItemCommand