Powershell - 我想在param部分重用常量

时间:2016-01-12 07:58:29

标签: powershell parameters code-reuse

我有一些常用于几个脚本的常量。 我想写一个共同的部分,并在我的脚本中点源。 我还想使用这些常量来使用" param"来初始化参数的默认值。部分。 但是param部分应该是脚本中的第一个非注释行,所以我不能在它之前点源。 关于如何做到这一点的任何建议"正确"? 当然,我可以在" Regular"上给出默认值。 " params"之后的代码部分... 如果$ param为空,请设置$ param = CONST ...

实施例: ConstantsFile.ps1

Set-Variable COMMON_CONST_num -option Constant -value 100
Set-Variable COMMON_CONST_path -option Constant -value "C:\Example\Example"

脚本:

. .\ConstantsFile.ps1

param 
( 
    [string]$targetPath = "$COMMON_CONST_path"
    [string]$number = "$COMMON_CONST_num"
)

...

1 个答案:

答案 0 :(得分:1)

为什么不将你的脚本变成模块?

然后你可以将每个脚本变成一个函数,在模块顶部点源你的标准变量(或者放弃那个想法并将它们包含在模块中)并在每个函数的参数中设置所有默认变量值部分:

<#
My-Module.psm1
#>

#Set my module variables
Set-Variable COMMON_CONST_num -option Constant -value 100
Set-Variable COMMON_CONST_path -option Constant -value "C:\Example\Example"

#Dot-Source my common variables
. .\ConstantsFile.ps1

function My-function1
{
    param 
    ( 
        [string]$Function1targetPath = "$COMMON_CONST_path",
        [string]$Function1number = "$COMMON_CONST_num"
    )

    #Do Stuff
}

function My-function2
{
    param 
    ( 
        [string]$Function2targetPath = "$COMMON_CONST_path",
        [string]$Function2number = "$COMMON_CONST_num"
    )

    #Do Stuff
}

您可能会发现这种方法也允许您为脚本创建一些常用功能。