Скрипт Powershell, работающий с xml, создает разные результаты в PowerGUI и консоли Powershell - PullRequest
0 голосов
/ 20 января 2012

У меня есть следующий скрипт в PS:

[System.Xml.XmlDocument] $Config;

function Get-ScriptDirectory
{
    Split-Path $script:MyInvocation.MyCommand.Path
}

function LoadConfig
{
    $configPath = Join-Path (Get-ScriptDirectory) Config.xml    
    $Config = [xml](gc $configPath) 
}

function WriteData
{
    $sourceFolderPath = $Config.Deploy.SourceFolder
    Write-Host $sourceFolderPath   
}

LoadConfig
WriteData

Мой основной XML-файл выглядит так:

<Deploy>
    <SourceFolder>C:\FolderPath</SourceFolder>
<Deploy>

Когда я отлаживаю его в PowerGUI, он работает нормально и выводит правильный вывод. Но когда я запускаю тот же сценарий в консоли powershell в Windows 7, в результате получается пустая строка. Понятия не имею почему.

1 Ответ

3 голосов
/ 20 января 2012

Ваш скрипт имеет проблему, так как вы объявляете [System.Xml.XmlDocument] $Config в начале вашего скрипта, вы должны использовать функцию $global:Config в LoadConfig.Более подробные объяснения смотрите на Get-Help about_Scopes.

function LoadConfig 
{ 
    $configPath = Join-Path (Get-ScriptDirectory) Config.xml     
    $global:Config = [xml](gc $configPath)  
}

Почему это работает в PowerGui?Поскольку $config существует в вашем сеансе, вам лучше настроить PowerGui, как показано на следующем рисунке.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...