Powershell从xml文件获取路径值

Powershell从xml文件获取路径值,powershell,Powershell,我是powershell的初学者,在读取xml文件的路径值时遇到问题 Settings.xml <?xml version="1.0"?> <Configuration> <EmailSettings> <SMTPServer>blabla</SMTPServer> <SMTPPort>blabla</SMTPPort> <Path>Repository\Excel&l

我是powershell的初学者,在读取xml文件的路径值时遇到问题

Settings.xml

<?xml version="1.0"?>
 <Configuration>
   <EmailSettings>
    <SMTPServer>blabla</SMTPServer>
    <SMTPPort>blabla</SMTPPort>
    <Path>Repository\Excel</Path>   
  </EmailSettings>
 </Configuration>
问题是,如果我显示提取的值,它会正确显示,而如果我将其与另一个值连接,例如,以获得完整的路径,则会得到此值

Write-Host $ScriptPath  
--> c:\script

write-host $ConfigFile.Configuration.EmailSettings.Path 
--> Repository\Excel

write-host $ScriptPath\$ConfigFile.Configuration.EmailSettings.Path   
--> c:\script\System.Xml.XmlDocument.Configuration.EmailSettings.Path
我们如何获得能够连接到其他变量的值(字符串格式

谢谢

您需要子表达式操作符
$(…)
,以便在可展开字符串中计算表达式,如
$ConfigFile.Configuration.EmailSettings.Path

相比之下,一个简单的变量引用,例如
$ScriptPath
,如果没有
$(…)
,就可以了:

请注意,我还添加了显式双引号,以使命令更加健壮-有关详细信息,请参见下文

顺便提一下:,除非其目的是绕过PowerShell的输出流,明确地只写入显示器


通常,非单表达式的无引号标记被隐式地视为可扩展字符串,即,就好像它们是以双引号传递的一样

但是,在没有显式引用的情况下,还有其他陷阱,例如以
-
开头的标记,或者需要转义其他字符,因此始终双引用可扩展标记是一个好习惯。


一般来说,PowerShell如何在参数模式下解析无引号的标记是一个复杂的主题-请参阅。

My Love,@Gus;很高兴听到它很有用。您已经在使用
Split Path
将一个部分放入变量中,那么
Join Path
呢?
Write-Host $ScriptPath  
--> c:\script

write-host $ConfigFile.Configuration.EmailSettings.Path 
--> Repository\Excel

write-host $ScriptPath\$ConfigFile.Configuration.EmailSettings.Path   
--> c:\script\System.Xml.XmlDocument.Configuration.EmailSettings.Path
Write-Host "$ScriptPath\$($ConfigFile.Configuration.EmailSettings.Path)"