Powershell 从字符串中获取值,知道它总是以字符串开头并以字符串结尾

问题描述

我正在运行 sql 查询,需要从字段中提取机器名称。结果有多个条目,以分号分隔。我只关心 Server=PCName\sql_Instance 的值。我正在处理的价值观看起来像......

Provider=sqlOLEDB;Server=PCName\sql_Instance;SomeOtherCrap=moreWords;ThisGoes=OnAndOn
Proer=sqlOLEDB;Server=PCName\sql_Instance;SsdgsdfomeOtherCrap=moreWords;TzfdzdfghisGoes=OnAndOn

server= 将始终包含我的 PC 名称(本地 Access DB 安装),即使有多行,它们也将相同。我真的只需要得到这个名字一次。虽然我已经按 ; 分割了值我的大脑太炸了,无法弄清楚如何从结果中获取服务器名称。我敢肯定这很明显,因为价值是放在盘子里的,但我不是很聪明,甚至无法弄清楚如何搜索答案。

解决方法

您可以使用 StartsWith("Server") 过滤掉所需的对象,然后在“=”和“/”上进行另一个拆分,使用 RegEx 可能更容易,但我喜欢拆分,例如:

 $string = "Provider=SQLOLEDB;Server=PCName\SQL_Instance;SomeOtherCrap=moreWords;ThisGoes=OnAndOn"
 $string.Split(";") | Where {$_.startswith("Server")}
 Server=PCName\SQL_Instance
 ($string.Split(";") | Where {$_.startswith("Server")}).split("=")[1].split("\")[0]
 PCName