Powershell使用Splatting封装调用WMI


通过Splatting向其它命令提交参数是一个不错的方式,下面例子使这种方式让他们在不同的机器上调用封装的WMI:

function Get-BIOSInfo
{
    param
    (
        $ComputerName,
        $Credential,
        $SomethingElse
    )

    $null = $PSBoundParameters.Remove('SomethingElse')

    Get-WmiObject -Class Win32_BIOS @PSBoundParameters
}

Get-BIOSInfo从WMI获得了BIOS信息并且它可以工作在本地、远程和带认证远程。可能因为是用户提交的参数会相同的对应Get-WMIobject中的参数,所以当没有提交-Credential参数时,Get-wmiobject也就没有接收这个参数。

Splatting通常是一个自定义哈希表,每个键代表一个参数且每个带入的值都会赋值给这个参数。在这个例子中,使用$PSBoundParameters替代预设的哈希表,同时它事先在函数中写好了要提交的参数

现在你只需要确定没有传错参数到目标命令。最后,函数自定义了一个“SomethingElse”的键值,但Get-WmiObject没有这样的一个参数,所以在你使用它前必须调用 Remove()方法从这个哈希表删除这个键。

原文地址:Use Splatting to Encapsulate WMI Calls

心得:

华而不实的手法,除了易读外和旧方比感觉没更佳的体验。了解即可。

×用微信扫描并分享
本文链接: https://www.pstips.net/use-splatting-to-encapsulate-wmi-calls.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

发表评论

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