2016-01-12 2 views
1

У меня есть довольно много констант, которые являются общими для нескольких скриптов. Я подумал о написании общего раздела и о том, чтобы указать его в моем сценарии. Я также хочу использовать эти константы для инициализации значений по умолчанию для параметров, используя раздел «param». Но параграф параграфа должен быть первой строкой без комментария в скрипте, поэтому я не могу рассчитать источник до него. Любые предложения о том, как это сделать «правильно»? Конечно, я могу дать значения по умолчанию на «Regular» код после того, как в разделе «Params» ... Нечто подобное, если $ пары пусты, множество $ = CONST пар ...Powershell - я хочу повторно использовать константы в разделе параметров

Пример: 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

Почему бы не сделать ваши скрипты в модуле?

Вы можете сделать каждый скрипт функцией, точечным источником стандартных переменных в верхней части модуля (или отказаться от этой идеи и просто включить их в модуль) и установить все значения переменных по умолчанию в каждой функции параграф:

<# 
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 
} 

Возможно, вы обнаружите, что этот подход позволяет создавать некоторые общие функции для скриптов.

+0

Спасибо, Это интересный подход, хотя мои текущие скрипты довольно длинные, с собственными функциями. Но стоит подумать и запомнить это для новых сценариев. – hagits

+0

Итак, вы можете перенести биты скрипта, которые используют эти общие переменные, в поддерживающий модуль как функции, сохраняя логику в главном скрипте. Затем загрузите модуль в начале сценария и вызовите функции по мере необходимости, передав параметры, чтобы переопределить переменные по умолчанию, если вам нужно. – ConanW

Смежные вопросы