用于NLTEST的命令输出的Powershell正则表达式

时间:2013-09-23 22:46:01

标签: regex parsing powershell

运行:

nltest /sc_query:domain /server:servername

产地:

Flags: 30 HAS_IP  HAS_TIMESERV 
Trusted DC Name \\hostname.domain 
Trusted DC Connection Status Status = 0 0x0 NERR_Success
The command completed successfully

我想抓住$只是在\\仅仅是'主机名'之后。

到目前为止:'(?< = \\\\)。*'(所以Expresso Regex util告诉我) 这会抓住'\\'

之后的所有内容

我如何在PowerShell中对此进行编码,以便只获取主机名?

2 个答案:

答案 0 :(得分:1)

你也可以使用-match运算符:

nltest /sc_query:domain /server:servername | Where {$_ -match '\\\\([a-zA-Z0-9_-]+)'} | 
    Foreach {$matches[1]}

答案 1 :(得分:0)

您可以使用:

$output = nltest /sc_query:domain /server:servername

$Hostname = ([regex]::Match($output,'(?<=\\\\).+?(?=\.)')).value

编辑:更新了Regex以获得主机名。

(?<=\\\\) = Positive look-behind for the string `\\` (It will start grab characters after the `\\`)  
.+?        = Any character one or more times
(?=\.)    = Positive look-ahead (It will only grab characters before a `.`)

编辑2:已实现我应该使+非贪婪,以便它会在第一个.停止。为未来访问者调整正则表达式。