2012-03-18 29 views
0

我想在我的函數中創建一個服務器smo對象,然後使用它在傳入的scriptblock中做一些有用的事情。之後,服務器將被刪除。我想設計我的功能類似於模板設計模式實現。我的代碼列在下面,我不確定是否在腳本塊中使用$ server變量。任何人都可以幫忙?謝謝。如何在Powershell中使用模板設計模式?

 
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 
} 

回答

2

的腳本塊需要被寫入,使得它期待一個服務器變量如:

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

然後在您的測試功能執行腳本塊,像這樣:

& $scripblock $server 

如果該scriptblock需要多個參數:

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

請記住使用空格分隔的參數:

& $scripblock $server "A name"