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