Powershell om het bestand inhoud formatteren

stemmen
30

Ik heb een script dat de inhoud krijgt van een bestand en controleert de ip. Dan is dat wordt toegevoegd aan een ander tekstbestand.

[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

Het bestand dat steeds wordt gemaakt, is als volgt:

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

Ik moet:

  1. zich te ontdoen van de eerste -------- lijnen.
  2. krijgen de volledige ip in dezelfde lijn (10.3.0.10)

Hebben geprobeerd Format-Table -Autosize, kies Select -Skip 1 etc, maar geen geluk.

Hoe kan dit worden bereikt.? Houd er rekening mee dat de code werkt prima zoals verwacht wanneer het handmatig wordt gerund, maar gooit dit probleem wanneer het wordt uitgevoerd met behulp van taakplanner.

Bewerken op basis van antwoord Matt's

Nu is de tekst bestand bevat:

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 Antwoord van output:

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

Maar nogmaals op de top van Name er is een ruimte. Ik moet alles tegenwoordig voor WIN-JB2 verwijderen .....

De vraag is gesteld op 06/10/2015 om 10:13
user
In andere talen...                            


1 antwoorden

stemmen
2

Ik kan niet perfect testen, maar ik zou willen terugkomen op een eerdere reactie van mij. Resolve-DNSNameretourneert objecten zodat hun output is beter dat bestemd is voor iets bezwaar op de hoogte. Export-CSVmoet hier de voorkeur.

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

Ik gewoonlijk niet dit wilt, maar als je liever je moet in staat zijn om het te gebruiken Format-tableuitgang nu. Dit lijkt meer in lijn zijn met wat je zoekt.

$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

Misschien heb je liever dat output. De header moet nu ook worden verwijderd als een lege regel in het begin.

Dat schept een aantal witruimte voor en na de output. Eenvoudige oplossing is in te pakken die zich in eenTrim()

$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`
antwoordde op 06/10/2015 om 10:35
bron van user

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