我正在从AD域中的所有计算机中提取主机名,当前命令以url格式将其格式化,并以主机名结尾。我只需要主机名,所以我想将所有内容都剥离到最后一个斜杠的左侧。
(([adsi]"WinNT://$((Get-WMIObject Win32_ComputerSystem).Domain)").Children).Where({$_.schemaclassname -eq 'computer'}) | %{ $_.Path }
它正在按原样输出,我恰好只需要主机名,所以我得到的不是WinNT://subdomain.somedomain.local/hostname
,而是hostname
,然后将其重定向到输出文件。
答案 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并非常轻松地选择特定字段。