PowerShell formázni a fájl tartalma

szavazat
30

Van egy script, amely megkapja a tartalmat egy fájl, és ellenőrzi annak ip. Aztán, hogy adunk egy másik szövegfájlt.

[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

A fájl amely egyre teremtett az alábbiak szerint:

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

Kell:

  1. megszabadulni az első -------- sorokat.
  2. hogy az egész ip ugyanabban a sorban (10.3.0.10)

Megpróbálták Format-Table -Autosize, majd válassza ki -Skip 1 stb, de nem szerencse.

Hogyan lehet ezt elérni.? Felhívjuk figyelmét, hogy a kód működik, mint várható, ha futott kézzel, de akkor dobja ezt a kérdést, amikor végre a feladat ütemező.

Szerkesztése alapján Matt válasza

Most a szöveges fájl tartalma:

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 válasza kimenet:

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

De megint tetején neve van egy hely. Meg kell törölni mindent előtt jelen WIN-JB2 .....

A kérdést 06/10/2015 10:13
felhasználó
Más nyelveken...                            


1 válasz

szavazat
2

Nem tudom tesztelni tökéletesen, de szeretnék visszatérni egy korábbi megjegyzést az enyém. Resolve-DNSNamevissza objektumokat, így teljesítményük is jobb szánt valami kifogást tisztában. Export-CSVlegyen előnyös itt.

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

Én általában nem szeretem ezt, de ha inkább képesnek kell lennie arra, hogy használja a Format-tablekimenet már. Ez úgy tűnik, hogy inline azzal, amit keres.

$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

Talán inkább a kibocsátást. A fejléc kell távolítani most is, mint egy üres sort az elején.

Ez létrehoz néhány white-space előtt és után a kimenet. Egyszerű megoldás az, hogy lezárja, hogy akár egyTrim()

$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`
Válaszolt 06/10/2015 10:35
a forrás felhasználó

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