我正在寻找一种在文件中查找字符串的方法,然后提取该字符串和分隔符之间的所有内容。我可以从文件中取出 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]
仍在解决问题,但这似乎让我走上了正确的道路。Split 将输入分解为一个数组,因此 [x] 让我可以调用特定元素。在拆分中有多个分隔符时,它会破坏其中任何一个的输入。也许这可以在未来帮助其他人。
感谢所有的帮助,伙计们!