1

跑步:

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 中对此进行编码,以便仅获取主机名?

4

2 回答 2

1

您也可以-match像这样使用运算符:

nltest /sc_query:domain /server:servername | Where {$_ -match '\\\\([a-zA-Z0-9_-]+)'} | 
    Foreach {$matches[1]}
于 2013-09-23T23:37:03.697 回答
0

你可以使用:

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

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

编辑:更新正则表达式以获取主机名。

(?<=\\\\) = 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:意识到我应该使+非贪婪,所以它会停在第一个.。为未来的访客调整正则表达式。

于 2013-09-23T23:15:36.140 回答