我有一個腳本,它從一個文件獲取內容並檢查其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