Powershell फ़ाइल सामग्री पुन: प्रारूपित करना

वोट
30

मैं एक स्क्रिप्ट है जो अपने आईपी के लिए एक फ़ाइल और चेक से सामग्री हो जाता है। तो यह है कि कुछ अन्य पाठ फ़ाइल में जोड़ा जाता है।

[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

फ़ाइल जो बनाया जा रहा है के रूप में नीचे दिखाया गया है:

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

मुझे निम्न की जरूरत है:

  1. पहले -------- लाइनों से छुटकारा पाने के।
  2. एक ही पंक्ति में पूरे आईपी मिलता है (10.3.0.10)

की कोशिश की है प्रारूप-टेबल -Autosize, तो -Skip 1 आदि, लेकिन कोई किस्मत का चयन करें।

यह कैसे हासिल किया जा सकता है।? कृपया ध्यान दें कि कोड ठीक काम करता है जब इसे मैन्युअल रूप से भाग गया है के रूप में उम्मीद है, लेकिन जब कार्य शेड्यूलर का उपयोग निष्पादित इस मुद्दे फेंकता है।

मैट के जवाब के आधार पर संपादित करें

अब पाठ फ़ाइल में शामिल हैं:

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

पीटर-साल के उत्तर उत्पादन:

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

लेकिन फिर नाम की चोटी पर वहाँ एक जगह है। मैं सब कुछ विन-JB2 से पहले वर्तमान हटाने की आवश्यकता .....

06/10/2015 को 10:13
उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
2

मैं पूरी तरह से परीक्षण नहीं कर सकते, लेकिन मैं मेरा एक पहले टिप्पणी करने के लिए वापस आने के लिए करना चाहते हैं। Resolve-DNSNameवस्तुओं रिटर्न तो अपने उत्पादन में बेहतर किस्मत में कुछ करने के लिए जागरूक आपत्ति है। Export-CSVयहाँ बेहतर होना चाहिए।

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

मैं सामान्य रूप से यह पसंद नहीं है, लेकिन यदि आप चाहें तो उपयोग करने के लिए सक्षम होना चाहिए Format-tableअब उत्पादन। यह आप के लिए क्या देख रहे के साथ और अधिक इनलाइन हो रहा है।

$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

शायद आपको लगता है कि उत्पादन पसंद करते हैं। हैडर शुरुआत में एक रिक्त पंक्ति के साथ ही अब हटा दिया जाना चाहिए।

यही कारण है कि पहले और उत्पादन के बाद कुछ सफेद-अंतरिक्ष बनाता है। सरल उपाय है कि रैप करने के लिए ऊपर एक में हैTrim()

$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`
06/10/2015 को 10:35
का स्रोत उपयोगकर्ता

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