2012-03-18 2 views
0

내 함수에서 서버 smo 객체를 만들고 싶다. 그런 다음 scriptblock에 전달 된 것과 함께 유용한 것을 사용한다. 그 후에 서버를 확인할 수 있습니다. 템플릿 디자인 패턴 구현과 비슷한 기능을 디자인하고 싶습니다. 내 코드는 아래에 나와 있습니다. 스크립트 블록에서 $ server 변수를 사용하는 방법을 모르겠습니다. 어느 누구라도 도움이 될 수 있습니까? 감사.Powershell에서 템플릿 디자인 패턴을 사용하는 방법?

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

그런 다음 테스트 기능 그렇게 같이 스크립트 블록을 실행합니다 :

& $scripblock $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 
} 

답변

2
스크립트 블록이 필요

는 서버 변수 예를 기대되도록 기록 될 스크립트 블록에는 여러 매개 변수가 필요합니다.

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

공백으로 구분 된 인수를 사용하여 호출해야 함 :

& $scripblock $server "A name" 
관련 문제