2015-02-24 15 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然后该类型在全局命名空间中生成,那么希望在适当的上下文中使用该引用。

相关问题