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

Parsing non-standard files for text using PowerShell and Select-String

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

然而,在这里使用标准的 Select-String 命令(在其他文件格式上使用完全相同的语法时有效):

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

... 产生以下错误:

Cannot index a null array

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

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

name:type:value

你的情况:

promptcredentialonce:i:0

但是,您正在尝试匹配选项名称(不存在)后带有 space 的内容:

promptcredentialonce: (.*)

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

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

promptcredentialonce:(.*)

如果您只需要值,请将模式更改为如下所示:

promptcredentialonce:\w+:(.*)