我知道这是相对简单的任务,但我是 PowerShell 新手,在这种情况下互联网搜索并没有真正帮助我:(
我有以下字符串 -
server1.us.domain.com
server2.domain.com
Run Code Online (Sandbox Code Playgroud)
我想从这些中提取 dns 后缀,即。
us.domain.com
domain.com
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法。到目前为止我能到达的最接近的是
$a = 'us.domain.com'
PS C:\> $a.Split('.')
us
domain
com
Run Code Online (Sandbox Code Playgroud)
你很接近。您应该使用该 Split 方法的第二个参数。它指定要返回的元素数量。$a在本例中是“server1.us.domain.com”
PS C:\Users\mcameron> $a.Split('.',2)
server1
us.domain.com
Run Code Online (Sandbox Code Playgroud)
您可以调用返回数组的第二个元素来获取域名。
PS C:\Users\mcameron> $a.Split('.',2)[1]
us.domain.com
Run Code Online (Sandbox Code Playgroud)
为了完整起见,另一种方法是事后加入元素。您也可以做其他简单的事情。在这种特殊情况下,虽然没有必要,但它们仍然是解决方案。
PS C:\Users\mcameron> ($a.Split(".") | Select -Skip 1) -join "."
us.domain.com
Run Code Online (Sandbox Code Playgroud)
还可以用.Substring(). 这依赖于.IndexOf()找到第一个周期的索引。
PS C:\Users\mcameron> $a.Substring($a.IndexOf(".") + 1)
us.domain.com
Run Code Online (Sandbox Code Playgroud)
还有一个小型的正则表达式解决方案。第一个周期之前什么都没有替换。
PS C:\Users\mcameron> $a -replace "^.+?\."
us.domain.com
Run Code Online (Sandbox Code Playgroud)