2017-01-19 1 views
0

Сохраненные сеансы Microsoft Remote Desktop имеют значения в них, когда вы открываете их с помощью текстового редактора (чтобы проверить себя, откройте подключение к удаленному рабочему столу, нажмите «Параметры», а затем нажмите «Сохранить» Как открыть полученный файл .rdp в текстовом редакторе).Разбор нестандартных файлов для текста с использованием PowerShell и Select-String

Однако, используя стандартную Select-String команду здесь (который работает, когда точно такой же синтаксис в других форматах):

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

... производит следующее сообщение об ошибке:

Cannot index a null array

Есть ли другая команда, используемая для синтаксического анализа такого файла или любого нестандартного текстового файла в PowerShell 2.0?

+0

@wOxxOm Я обновил сообщение с кодом, который я использую – AlwaysQuestioning

+0

'Матчи' - массив, поэтому в PS2 вам нужны' Соответствует [0] 'или foreach/where/select-object. – wOxxOm

ответ

1

Ваш шаблон неправильный. Синтаксис опций .rdp файлов

name:type:value 

В вашем случае:

promptcredentialonce:i:0 

Тем не менее, вы пытаетесь соответствовать что-то с пробелом после имени параметра (который не существует):

promptcredentialonce: (.*) 

Без матча .Matches свойство является пустым и .Group[1] пытается индексированный доступ на нулевое значение.

Если вы хотите получить значение в том числе типа, удалить пространство:

promptcredentialonce:(.*) 

Если вы хотите просто значение, изменить шаблон на что-то вроде этого:

promptcredentialonce:\w+:(.*)