每一个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
本文链接: https://www.pstips.net/create-mini-module.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
发生了错误
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