Powershell for å reformatere filinnholdet

stemmer
30

Jeg har et script som får innholdet fra en fil og sjekker for sin ip. Så det er lagt til en annen tekstfil.

[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

Filen som blir opprettet er som vist nedenfor:

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

Jeg må:

  1. kvitte seg med de første -------- linjene.
  2. få hele ip på samme linje (10.3.0.10)

Har prøvd Format-Table -Autosize, så velg -Skip 1 etc, men uten hell.

Hvordan kan dette oppnås.? Vær oppmerksom på at koden fungerer fint som forventet når det er løp manuelt, men kaster dette problemet når henrettet ved hjelp av Oppgaveplanlegging.

Rediger Basert på Matt svar

Nå tekstfilen inneholder:

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 svar utgang:

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

Men igjen på toppen av navn er det en plass. Jeg trenger å slette alt til stede før WIN-JB2 .....

Publisert på 06/10/2015 klokken 10:13
bruker
På andre språk...                            


1 svar

stemmer
2

Jeg kan ikke teste perfekt, men jeg ønsker å komme tilbake til en tidligere kommentar av meg. Resolve-DNSNamereturnerer gjenstander slik at deres produksjon er bedre bestemt for noe objekt klar. Export-CSVbør være å foretrekke her.

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

Jeg vanligvis ikke liker dette, men hvis du foretrekker det bør være i stand til å bruke Format-tableutgangs nå. Dette synes å være mer inline med det du leter etter.

$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

Kanskje du foretrekker at produksjonen. Toppteksten bør fjernes nå, så vel som en blank linje i begynnelsen.

Det skaper noen white-space før og etter produksjonen. Enkel løsning er å pakke det opp i enTrim()

$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`
Svarte 06/10/2015 kl. 10:35
kilden bruker

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