我正在寻找一种方法来查找文件中的字符串,然后提取该字符串与分隔符之间的所有内容。我可以从文件中取出LINE,但是我对如何从中取出想要的字符串有些困惑。
文件外的行是这样的:
<add key="ConnectionString" value="Data Source=xxxxxx;Initial Catalog=Database;Integrated Security=True" />
我可以找到“数据源=“,但我想返回“ xxxxxx”。这是我正在使用的:
((Get-Process -Name "db-engine").Path ) + '.Config' | Select-String -Path {$_} - Pattern 'Data Source='
这从上面给了我整个“添加密钥”行。
在此先感谢您的帮助!
编辑:感谢您的答复。经过更多的挖掘之后,看起来“更适当”的方法实际上是使用[xml]将文件的内容拉入xml对象。然后,我可以获取值并使用split将数据分解为所需的数据块。最终代码如下所示:
$configpath = ((Get-Process -Name "db-engine").Path)
$linepath = $configpath + ".Config"
[xml]$xmlfile = get-content $linepath
$xmlvalue = ($xmlfile.configuration.appSettings.add | where {$_.key -eq "ConnectionString"}).value
$server = $xmlvalue.split(";=")[3]
$db = $xmlvalue.split(";=")[5]
仍然可以解决问题,但这似乎使我走上了正确的道路。拆分将输入分成一个数组,因此[x]允许我调用特定元素。在拆分中有多个定界符时,它会中断其中任何一个的输入。也许这可以在将来对其他人有所帮助。
谢谢大家的帮助!
就个人而言,我只是获取属性的值-可能使用带有Select-Xml的XQuery-然后将其分割为分号,然后使用ConvertFrom-StringData
:
$xml = [xml]'<add key="ConnectionString" value="Data Source=xxxxxx;Initial Catalog=Database;Integrated Security=True" />';
$ConnectionString = ($xml | Select-Xml -XPath '/add[@key="ConnectionString"]/@value').Node.'#text'
$DataSource = ($ConnectionString.Split(';') | ConvertFrom-StringData).'Data Source'
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句