使用PowerShell和Select-String解析文本的非标准文件

时间:2017-01-19 04:12:55

标签: file powershell parsing powershell-v2.0

当您使用文本编辑器打开它们时,Microsoft远程桌面保存的会话中包含值(要自己测试,打开远程桌面连接,单击选项,然后单击另存为。在文本编辑器中打开生成的.rdp文件)

但是,在此处使用标准Select-String命令(在其他文件格式上使用完全相同的语法时):

$MyOObject."Prompt" = (Select-String -Path $Path -Pattern "promptcredentialonce: (.*)").Matches.Groups[1].Value

...产生以下错误:

  

无法索引空数组

在PowerShell 2.0中是否有用于解析此类文件或任何非标准文本文件的其他命令?

1 个答案:

答案 0 :(得分:1)

您的模式不正确。 .rdp文件中选项的语法是

name:type:value

在你的情况下:

promptcredentialonce:i:0

但是,您尝试在选项名称(不存在)后用空格匹配某些内容:

promptcredentialonce: (.*)

如果没有匹配,则.Matches属性为空,.Group[1]尝试对空值进行索引访问。

如果您想要包含类型的值,请删除空格:

promptcredentialonce:(.*)

如果您只想要该值,请将模式更改为以下内容:

promptcredentialonce:\w+:(.*)