PowerShell的 - 条来自主机的每行所有空白的IP,FQDN和主机名创建变量和使用这些来ping

问题描述:

之前,提交假设我们有一个hosts文件:PowerShell的 - 条来自主机的每行所有空白的IP,FQDN和主机名创建变量和使用这些来ping

10.10.10.10 test1.domain test1 
20.20.20.201 test2.domain test2 
30.30.301.30 test3.domain test3 
40.40.40.40 test4.domain test4 

注意的IP地址与3个位数主机标识符,考虑到这一点,每条线的结构略有不同,因为具有2位数的那些线在IP和FQDN之间具有更多空间。 记住这些差异,将如何: 1.当你通过每行 或 提取每行& ping的FQDN 2.完全剥离IP,然后遍历每个条目,ping每个FQDN为你走?

我似乎无法做选择1,以及最接近的选项2我有是这样做的:

Get-Content hosts | ForEach-Object { $_Split()[3]; } 

但这仅打印出那些主机那里是在主机3个位数标识符,而具有2位数字的那些在IP和FQDN之间有更多空白,因此它将FQDN计为第4个字段。

任何人都可以协助这个吗?我对来自UNIX背景的PowerShell相当陌生。

Powershell中的字符串是.Net字符串对象,因此包含强大的操作方法。 Split()可以告诉omit empty元素。像这样,

# Read host list 
$data = Get-Content C:\Temp\hostlist.txt 
# Split each row from the file. Use space to split, omit empty elements 
# Thus element 0 is the IP, 1 is the FQDN, 2 is the hostname 
$data | ForEach-Object { ($_.split(" ", [StringSplitOptions]::RemoveEmptyEntries))[1] } 

# Output 
test1.domain 
test2.domain 
test3.domain 
test4.domain