Как показано в полезном ответе JosefZ , ваша единственная проблема состояла в том, что вы не извлекли интересующее совпадение из свойств объекта [Microsoft.PowerShell.Commands.MatchInfo]
, который ваш Select-String
выходы вызова.
Однако использование командлета в этом случае немного сложное;оператор -replace
предлагает более простую и эффективную альтернативу:
$string = "The SID is S-1-9-1551374245-3853148685-361627209-2951783729-4075502353-0-0-0-0-3"
$string -replace `
'.*\b(S-\d-\d-\d{10}-\d{10}-\d{9}-\d{10}-\d{10}-\d-\d-\d-\d-\d)\b.*',
'$1'
Я немного упростил ваше регулярное выражение: \d{1}
-> \d
.Обратите внимание, что он не соответствует всем возможным формам, которые могут иметь идентификаторы SID.
Обратите внимание, что регулярное выражение соответствует входной строке whole , и заменяет его только на группу захвата.((...)
, подвыражение, соответствующее SID), совпадает ($1
).