Powershell přeformátovat obsah souboru

hlasů
30

Mám skript, který dostane obsah z jednoho souboru a kontroly pro jeho šetření. Potom, který se přidává do nějakého jiného textového souboru.

[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

Soubor, který je čím dál vytvořili, je jak je uvedeno níže:

             ----                         ----   ---   -------    --------
        WIN-JB2A2FS84MQ.domain.com        A      1200  Answer     10.3.0.4
                                                                   8       
        WIN-QP0BH4SD2H9.domain.com        A      1200  Answer     10.3.1.1
                                                                   9       

Potřebuji:

  1. zbavit prvních -------- linek.
  2. získat kompletní ip ve stejném řádku (10.3.0.10)

Zkoušel Format-Table -Autosize, pak zvolte -Skip 1 etc, ale ne štěstí.

Jak toho lze dosáhnout.? Vezměte prosím na vědomí, že kód funguje podle očekávání, pokud je to běžel ručně, ale hází tento problém, když je spouštěn pomocí Plánovač úloh.

Upravovat na Mattova odpovědi Based

Nyní je textový soubor obsahuje:

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 je odpověď výkon:

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

Ale opět na vrcholu jména je tu ještě jedna mezera. Musím odstranit vše, co současný před WIN-JB2 .....

Položena 06/10/2015 v 10:13
uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
2

Nemohu otestovat dokonale, ale chtěl bych se vrátit k dřívější komentář dolu. Resolve-DNSNamevrací objekty tak jejich výkon je lepší určen pro něco namítat vědomi. Export-CSVby tu měl být vhodnější.

$hlist1 = Get-Content -Path "C:\Timezone\Update\host.txt"
$hlist1 | ForEach-Object{Resolve-DnsName $_} | 
    Export-Csv "C:\Timezone\Update\hiplist.txt" -NoTypeInformation

I za normálních okolností se to nelíbí, ale pokud dáváte přednost vy byste měli být schopni používat Format-tablevýstup teď. To se zdá být více inline s tím, co jste hledali.

$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

Možná, že chcete, aby výstup. Hlavička by měla být odstraněna nyní stejně jako prázdný řádek na začátku.

Že vytvoří nějaký white-space před a po výstupu. Jednoduchým řešením je zabalit, aby se vTrim()

$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`
Odpovězeno 06/10/2015 v 10:35
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more