我有一个脚本,它从一个文件获取内容并检查其IP。然后将其添加到其他文本文件中。Powershell重新格式化文件内容
[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
我需要:
- 摆脱第一--------线。
- 得到整个IP在同一行(10.3.0.10)
试过格式表-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"
彼得-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
但同样的名称的顶部有一个空间。我需要删除WIN-JB2之前的所有内容.....
这可能是Array列表如何转换为字符串输出的问题。我的猜测是这是你的问题。解决这个问题是使用不同的导出方法或使用自定义对象的问题。 'Out-File'会试着将它转换为字符串以便输出......这就是你所看到的。任何你使用数组列表的理由? – Matt
@Matt:不完全。奇怪的是,相同的代码在手动运行时按预期工作。当我使用任务调度器触发powershell代码时,我遇到了这种类型的问题。 – serverstackqns
'Resolve-DnsName'返回对象,因此将它们转换为字符串会变得很奇怪。我没有这个cmdlet可用的系统,所以我个人无法测试。 – Matt