gpt4 book ai didi

powershell - Powershell从xml文件获取路径值

转载 作者:行者123 更新时间:2023-12-02 23:53:13 27 4
gpt4 key购买 nike

我是powershell的初学者,无法读取xml文件的路径值。

Settings.xml

<?xml version="1.0"?>
<Configuration>
<EmailSettings>
<SMTPServer>blabla</SMTPServer>
<SMTPPort>blabla</SMTPPort>
<Path>Repository\Excel</Path>
</EmailSettings>
</Configuration>

要读取XML文件中的数据,我这样做
$ScriptPath = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent

[xml]$ConfigFile = Get-Content "$ScriptPath\Settings.xml"

问题是,如果我显示提取的值,则显示正确,而如果我将其与另一个值连接起来(例如,获得完整路径),则会得到此信息
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的简单变量引用(例如$(...))就可以了:

Write-Host "$ScriptPath\$($ConfigFile.Configuration.EmailSettings.Path)"

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

顺便说一句: Write-Host is generally the wrong tool to use,除非意图是明确地仅写入显示内容,否则绕过PowerShell的输出流。

通常,不是单个表达式的 不带引号的标记将像可扩展字符串一样隐式地对待,即好像它们已经用双引号引起来了并且大体上是 the same rules apply一样。

但是,在没有显式引号的情况下,存在其他陷阱,例如以 -开头的 token 或需要转义其他字符的情况,因此 始终双引号可扩展 token 是一种形成的好习惯。

通常,PowerShell如何在参数模式下解析未加引号的 token 是一个复杂的主题-请参见 this answer

关于powershell - Powershell从xml文件获取路径值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53124719/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com