在Powershell中从字符串中剥离数据

时间:2019-05-23 14:48:12

标签: powershell

我正在从AD域中的所有计算机中提取主机名,当前命令以url格式将其格式化,并以主机名结尾。我只需要主机名,所以我想将所有内容都剥离到最后一个斜杠的左侧。

(([adsi]"WinNT://$((Get-WMIObject Win32_ComputerSystem).Domain)").Children).Where({$_.schemaclassname -eq 'computer'}) | %{ $_.Path }

它正在按原样输出,我恰好只需要主机名,所以我得到的不是WinNT://subdomain.somedomain.local/hostname,而是hostname,然后将其重定向到输出文件。

2 个答案:

答案 0 :(得分:2)

您可以使用-Split运算符来帮助检索数据:

"WinNT://subdomain.somedomain.local/hostname" -Split "/" | Select-Object -Last 1

-Split "/"使用/作为分隔符,将值分成子字符串数组。您可以使用数组索引或Select-Object访问生成的零件。由于需要最后一个值,因此可以选择访问结果数组([-1])的("WinNT://subdomain.somedomain.local/hostname" -Split "/")[-1]索引。

有关更多信息和示例,请参见About Split

答案 1 :(得分:0)

仅发布另一个选项,以及其他可能有用的方法。您还可以按字符串的最后一个索引对字符串进行拆分,这是字符最后一次出现在字符串中。从那里,您可以使用Substring方法选择字符串的其余部分。

$lio = "WinNT://subdomain.somedomain.local/hostname".LastIndexOf('/')
"WinNT://subdomain.somedomain.local/hostname".Substring($lin + 1) # +1 to not include the slash

您可以看到字符串here的所有方法

对于这样的事情,我也建议您查看ActiveDirectory module。您可以运行Get-ADComputer并非常轻松地选择特定字段。