我有一个脚本从一个文件中获取内容并检查其ip。然后将其添加到其他文本文件中。
[System.Collections.ArrayList]$hlist1 = Get-Content -Path "C:\Timezone\Update\host.txt"
$hiplist = New-Object System.Collections.ArrayList
$hlist2 = New-Object System.Collections.ArrayList
ForEach ($h in $hlist1)
{
$hip = Resolve-DnsName $h
$hiplist.Add($hip)
}
$hiplist | Out-File "C:\Timezone\Update\hiplist.txt"
创建的文件如下所示:
---- ---- --- ------- --------
WIN-JB2A2FS84MQ.domain.com A 1200 Answer 10.3.0.4
8
WIN-QP0BH4SD2H9.domain.com A 1200 Answer 10.3.1.1
9
我需要:
尝试过Format-Table -Autosize,然后选择-Skip 1等,但没有运气。
如何实现这一目标。请注意,代码在手动运行时可以正常工作,但在使用任务调度程序执行时会抛出此问题。
根据马特的回答编辑
现在文本文件包含:
"Address","IPAddress","QueryType","IP4Address","Name","Type","CharacterSet","Section","DataLength","TTL"
"10.3.0.48","10.3.0.48","A","10.3.0.48","WIN-JB2A2FS84MQ.domain.com","A","Unicode","Answer","4","1200"
"10.3.1.19","10.3.1.19","A","10.3.1.19","WIN-QP0BH4SD2H9.domain.com","A","Unicode","Answer","4","1200"
Peter-sal的回复输出:
Name Type TTL Section IPAddress
---- ---- --- ------- ---------
WIN-JB2A2FS84MQ.domain.com A 1200 Answer 10.3.0.48
WIN-QP0BH4SD2H9.domain.com A 1200 Answer 10.3.1.19
但是在Name之上还有一个空格。我需要在WIN-JB2之前删除所有内容......
答案 0 :(得分:2)
我无法完美测试,但我想回到我之前的评论。 Resolve-DNSName
返回对象,因此它们的输出更适合于识别对象的内容。 Export-CSV
应该更适合这里。
$hlist1 = Get-Content -Path "C:\Timezone\Update\host.txt"
$hlist1 | ForEach-Object{Resolve-DnsName $_} |
Export-Csv "C:\Timezone\Update\hiplist.txt" -NoTypeInformation
我通常不喜欢这样,但如果您愿意,您现在应该可以使用Format-table
输出。这似乎更符合您的要求。
$hlist1 = Get-Content -Path "C:\Timezone\Update\host.txt"
$hlist1 | ForEach-Object{Resolve-DnsName $_} |
Format-Table -HideTableHeaders | Select-Object -Skip 1 |
Out-File "C:\Timezone\Update\hiplist.txt" -Width 200
也许你更喜欢那个输出。现在应删除标题以及开头的空白行。
在输出之前和之后创建一些空白区域。简单的解决方案是将其包装在Trim()
$hlist1 = Get-Content -Path "C:\Timezone\Update\host.txt"
$results = ($hlist1 | ForEach-Object{Resolve-DnsName $_} |
Format-Table -HideTableHeaders |
Out-string).Trim()`
$results | Out-File "C:\Timezone\Update\hiplist.txt" -Width 200`