0

我正在尝试使用 PowerShell 在文件中搜索字符串,然后返回下一行字符串的一部分。

该文件将类似于:LTI.ini

Division=AAA-
TargetContainer=OU=Computers,OU=123,DC=ms,DC=com

Division=BBB-
TargetContainer=OU=Computers,OU=456,DC=ms,DC=com

所以我到目前为止是

$name = 'BBB-1234'
$pos = $name.IndexOf("-")
$leftPart = $name.Substring(0, $pos) + '-'

$a = Get-Content ..\Desktop\Powershell\LTI.ini
$b = $a | Select-String $leftPart
$b

这给了我 $b 作为 LTI.ini 中的 BBB- 行,但我不知道如何将以下行设置为变量,然后只在 TargetContainer= 之后获取所有内容

4

2 回答 2

4

这应该有效:

$b =($a | select-string $leftpart -Context 1  ).context.postcontext -replace '(?:TargetContainer=)(.*)','$1'
$b
于 2013-06-14T05:03:22.413 回答
0

这是提到的多行正则表达式@JPBlanc:

$regex = "${leftPart}(.+)(TargetContainer=)(.+)Division="
[regex]::Matches($a, $regex, 'Singleline')[0].Groups[3].Value.Trim()
于 2013-06-14T08:02:38.103 回答