Область применения модуля в PowerShell Studio 2018

Я работаю с активно разработанным модулем для интерфейса PowerShell Studio. Я довольно новичок в WinForms, поэтому у меня возникли проблемы с пониманием того, как работает область видимости. Ниже приведен мой файл Globals.ps1:

#--------------------------------------------
# Declare Global Variables and Functions here
#--------------------------------------------

Import-Module "C:\MyFiles\Git\PTI-Core\PowerShell\CoreModules\PTI.TMT" -Force
Import-Module pti.Forms

$TFW_ADO = Get-PTIADOConn 'TMT'

#Sample function that provides the location of the script
function Get-ScriptDirectory
{
    [OutputType([string])]
    param ()
    if ($null -ne $hostinvocation)
    {
        Split-Path $hostinvocation.MyCommand.path
    }
    else
    {
        Split-Path $script:MyInvocation.MyCommand.Path
    }
}

#Sample variable that provides the location of the script
[string]$ScriptDirectory = Get-ScriptDirectory

Как видите, я импортирую свои модули и глобальное ADO-соединение. Модуль, который импортируется из пути к файлу, является модулем, над которым активно ведется работа.

Вот где я запутался, хотя. Переходя к моей основной форме, вы можете увидеть, что я вызываю функцию Get-Schemasчасть этого модуля. Он выделен серым цветом, говоря, что он неизвестен, но когда я запускаю графический интерфейс, он просто отлично захватывает данные:

Это заселяется прямо в MainForm_Load функция. К глобальному соединению ADO также обращаются очень хорошо.

$MainForm_Load={

    #Import-Module "C:\MyFiles\Git\PTI-Core\PowerShell\CoreModules\PTI.TMT" -Force

    # display the combo box with vendor schemas
    $Schemas = Get-Schemas $TFW_ADO
    $cb_Schemas.DataSource = $Schemas.SchName

    # displays current user
    $labelUser.Text = $env:USERNAME
}

Теперь я начинаю сталкиваться с проблемами. Интерфейс строится с помощью контроллера вкладок, который соответствует тому, что выбрано в поле со списком. Но прежде чем я это понял, я пытался заставить данные отображаться на вкладке. Я могу сделать это с закомментированным кодом, но когда я пытаюсь запустить функцию из модуля, который делает то же самое (я просто извлек SQL для тестирования), я не могу получить доступ к функции модуля.

$TabController_SelectedIndexChanged={

    if ($TabController.SelectedTab -eq $tabJobCodes)
    {
        #$ADO = Get-PTIADOConn 'TMT'

        #$sql = "select DST_COLNAME as Name,
        #          OLD_VALUE as OldValue,
        #          NEW_VALUE as NewValue
        #   from DBXREF
        #   where DST_COLNAME in ('COMPCODE', 'REPREASON', 'COMPLAINT')
        #       and DBSCHID = 1
        #   order by DST_COLNAME"
        #
        #$ds_Codes = Start-AutoPreparedSQLQuery $TFW_ADO $sql -ReturnsDataset
        #$Codes = $ds_Codes.Tables[0]

        $Codes = Get-JobCodesByVendor $TFW_ADO

        $dgv_JobCodes.DataSource = $Codes
    }
}

Есть ли что-то, чего мне не хватает в том, как работает область в PowerShell Studio? Насколько я понимаю, что-нибудь в globals.ps1 должно быть доступно по всему приложению.

0 ответов

Другие вопросы по тегам