2015-02-24 14 views
0

我有一個代碼將dll導入到我的腳本中。但我在每一個使用這個DLL的腳本中複製這部分代碼。我認爲這不是一個好的做法。在這裏避免代碼複製是一個好的做法。我在做什麼在多個腳本中使用添加類型

例子:

function Backup-Database 
{ 
    $pathSMO = "C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Smo.dll" 
    $pathSMOEx = "C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll" 
    #imports 
    Add-Type -path $pathSMO 
    Add-Type -path $pathSMOEx 

    #other stuff... 
} 

function Restore-Database 
{ 
    $pathSMO = "C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.Smo.dll" 
    $pathSMOEx = "C:\Program Files\Microsoft SQL Server\110\SDK\Assemblies\Microsoft.SqlServer.SmoExtended.dll" 
    #imports 
    Add-Type -path $pathSMO 
    Add-Type -path $pathSMOEx 

    #other stuff... 
} 

回答

1

原諒我,如果我是關閉基地,但你應該能夠移動上述功能的類型聲明,仍然有它的職能範圍內使用。從TechNet for Add-Type

$source = @" 
public class BasicTest 
{ 
    public static int Add(int a, int b) 
    { 
     return (a + b); 
    } 
    public int Multiply(int a, int b) 
    { 
    return (a * b); 
    } 
} 
"@ 

Add-Type -TypeDefinition $source 

function test1{ 
    [BasicTest]::Add(4, 3) 
} 

Function test2{ 
    $basicTestObject = New-Object BasicTest 
    $basicTestObject.Multiply(5, 2) 
} 

test1 

test2 

從代碼輸出Bastardizing以上

7 
10 

例1如可以看到的定義是功能之外。如果省略參數-NameSpace然後該類型在全局命名空間中生成,那麼希望在適當的上下文中使用該引用。

相關問題