2012-01-20 22 views
0

に異なる出力を生成します。私はそれをデバッグのときPowerShellスクリプトは、私がPSで次のスクリプトを持ってPowerguiブロックとPowerShellのコンソール

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

[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ファイルは次のようになりますPowerGUIツールは正常に動作し、正しい出力を書き込みます。しかし、Windows 7のPowerShellコンソールで同じスクリプトを実行すると、空の行になります。なぜ私は考えていない。

+1

「$ configPath」は常に同じですか? – stej

+0

はいです。私はそれを解決した。以下の答えを参照してください。 – zosim

答えて

3

スクリプトの最初に[System.Xml.XmlDocument] $Configと宣言しているので、スクリプトに問題があります。LoadConfig$global:Configを使用する必要があります。詳しい説明は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

+0

ありがとう、これは私を助けた。 – zosim

関連する問題