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