我正在尝试使用外部配置文件将变量传递给我的脚本。 这是我正在尝试的一个简单示例:
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,您可以看到该值不是预期的...任何人都可以解释我出了什么问题吗?
解决方案如下:
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