如何在Powershell中使用模板设计模式?

时间:2012-03-18 12:34:12

标签: templates powershell

我想在我的函数中创建一个服务器smo对象,然后使用它对传入的scriptblock执行一些有用的操作。之后,将删除服务器veriable。我想设计一个类似于模板设计模式实现的函数。我的代码如下所示,我不确定如何在scriptblock中使用$ server变量。任何人都可以帮忙吗?感谢。

function test{
   [CmdletBinding()]
   param (
        [Parameter(Mandatory = $true, Position = 0)] 
        [object] 
        $instance,

        [Parameter(Mandatory = $true, Position = 1)] 
        [scriptblock] 
        $script
        )

    [Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
    $server = new-object ('Microsoft.SqlServer.Management.Smo.Server') $instance

    # do something with $script

    Remove-Variable -Name $server
}

1 个答案:

答案 0 :(得分:3)

需要编写脚本块,使其期望服务器变量,例如:

test $anInstance {param($server) $server.DoSomething}

然后在你的测试函数中执行脚本块,如下所示:

& $scripblock $server

如果scriptblock需要多个参数:

test $anInstance {param($server, $name) $server.DoSomething}

请记住使用空格分隔的args调用:

& $scripblock $server "A name"