外部配置文件中的值错误

问题描述 投票:0回答:1

我正在尝试使用外部配置文件将变量传递给我的脚本。 这是我正在尝试的一个简单示例:

PS C:\test> 
@'
<root>
 <Global>
  <Path01>C:\test\test1</Path01>
 </Global>
</root>
'@ | Out-File Config.xml


PS C:\test> $config = ([xml](Get-Content Config.xml)).root

PS C:\test> $config.global.path01
C:\test\test1

PS C:\test> test-path $config.global.path01\*.csv
Test-Path : Impossibile trovare un parametro posizionale che accetta l'argomento '\*.csv'.
In riga:1 car:1
+ test-path $config.global.path01\*.csv
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Test-Path], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.TestPathCommand
 

PS C:\test> dir c:\test\test1


    Directory: C:\test\test1


Mode                 LastWriteTime         Length Name                                                                                                                                                                                                           
----                 -------------         ------ ----                                                                                                                                                                                                           
-a----        13/09/2024     16:05             75 20240913140546.csv                                                                                                                                                                                             



PS C:\test> $Path0001 = "$config.global.path01"

PS C:\test> $Path0001
System.Xml.XmlElement.global.path01

PS C:\test> $config.global.path01
C:\test\test1

PS C:\test> test-path $config.global.path01
True
    
PS C:\test> test-path $Path0001\*.csv
False

PS C:\test> $path0001
System.Xml.XmlElement.global.path01

如您所见,我只是创建了一个简单的 config.xml,加载它,并使用 $config.global.path01 的值来测试包含测试 .csv 文件的路径。 结果是一个错误。为什么?? (抱歉,我的操作系统是意大利语)

如果我将 $config.global.path01 的值分配给新变量 $Path0001,您可以看到该值不是预期的...任何人都可以解释我出了什么问题吗?

file variables configuration external
1个回答
0
投票

解决方案如下:

PS C:\test> $aaa = "$config.Global.Path01"

PS C:\test> $aaa
System.Xml.XmlElement.Global.Path01

PS C:\test> $aaa = $config.Global.Path01

PS C:\test> $aaa
C:\test\test1

因此,如果您测试 csv 文件的路径:

PS C:\test> $aaa = $config.Global.Path01

PS C:\test> $aaa
C:\test\test1

PS C:\test> test-path $aaa\*.csv
True
© www.soinside.com 2019 - 2024. All rights reserved.