2012-03-18 3 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

нуждается ScriptBlock быть написана таким образом, что он ожидает переменная сервера, например:

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

Затем в тестовой функции выполнения в ScriptBlock так:

& $scripblock $server 

И если для сценария требуется несколько параметров:

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

Не забудьте использовать пробелы, разделенные аргументами:

& $scripblock $server "A name" 
Смежные вопросы