每一个PowerShell的函数都可以通过一行代码转换成一个脚本模块。我们可以打开ISE编辑器创建一个函数来测试这个功能。
1
2
3
4
|
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