PowerShell per riformattare il contenuto del file

voti
30

Ho uno script che ottiene il contenuto da un file e controlli per il suo ip. Allora che si aggiunge a qualche altro file di testo.

[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

Il file che viene sempre creato è come illustrato di seguito:

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

Ho bisogno di:

  1. sbarazzarsi delle prime -------- linee.
  2. ottenere l'intera ip nella stessa linea (10.3.0.10)

Hanno provato Format-Table -AutoSize, quindi su Seleziona -skip 1 ecc, ma senza fortuna.

Come può essere raggiunto.? Si prega di notare che il codice funziona bene come previsto quando si correva manualmente, ma lancia questo problema quando eseguito utilizzando Utilità di pianificazione.

Modifica in base alla risposta di Matt

Ora il file di testo contiene:

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 di uscita risposta:

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

Ma ancora una volta in cima al nome c'è un unico spazio. Ho bisogno di cancellare tutto presente prima WIN-JB2 .....

È pubblicato 06/10/2015 alle 10:13
dall'utente
In altre lingue...                            


1 risposte

voti
2

Non posso testare perfettamente, ma mi piacerebbe tornare a un commento precedente di mine. Resolve-DNSNamerestituisce gli oggetti in modo la loro produzione è meglio destinato per qualcosa di oggetto a conoscenza. Export-CSVdovrebbe essere preferibile qui.

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

Io normalmente non mi piace questo, ma se si preferisce si dovrebbe essere in grado di utilizzare l' Format-tableuscita ora. Questo sembra essere più in linea con quello che stai cercando.

$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

Forse si preferisce che in uscita. L'intestazione deve essere rimosso momento così come una riga vuota all'inizio.

Questo crea un po 'di bianco-spazio prima e dopo l'uscita. Soluzione semplice è quello di avvolgere che in unTrim()

$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`
Risposto il 06/10/2015 a 10:35
fonte dall'utente

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