2017-08-16 9 views
0

私はオンラインからこのスクリプトを入手しました。少なくとも私はCSVにデータをエクスポートする方法を理解することができました。これは私の能力をはるかに超えていることが証明されています。私はExport-Csvとパイプを試しましたが、どちらも成功しませんでした。このPowerShellスクリプトを変更して、データを切り捨てずに両方のセクションをCSVにエクスポートするにはどうすればよいですか?

成功した試みは1つありましたが、すべてのデータが1列に圧縮されて途切れてしまったため、-Widthパラメータでもそれが解決されませんでした。残りの時間は、私はちょうどLengthのようなランダムな情報を取得するか、番号と文字が混乱しているデータが破損しているように見えます。

すべてのスクリプトでは、IPリストにpingnslookupが実行されます。私はそれをCSVファイルに移動して、データを並べ替えることができ、空であるIPを見つけることができます。私たちのIPスペースをクリーンアップしたり、DNSの問題を特定するために使用されたりしません。

$InputFile = 'C:\Temp\list.txt' 
$addresses = Get-Content $InputFile 
$reader = New-Object IO.StreamReader $InputFile 
while ($reader.ReadLine() -ne $null) { $TotalIPs++ } 
Write-Host "" 
Write-Host "Performing nslookup on each address..."  
foreach ($address in $addresses) { 
    ## Progress bar 
    $i++ 
    $percentdone = (($i/$TotalIPs) * 100) 
    $percentdonerounded = "{0:N0}" -f $percentdone 
    Write-Progress -Activity "Performing nslookups" -CurrentOperation "Working on IP: $address (IP $i of $TotalIPs)" -Status "$percentdonerounded% complete" -PercentComplete $percentdone 
    ## End progress bar 
    try { 
     [System.Net.Dns]::Resolve($address) | Select HostName, AddressList 
    } catch { 
     Write-Host "$address was not found. $_" -ForegroundColor Green 
    } 
} 
Write-Host "" 
Write-Host "Pinging each address..." 
foreach($address in $addresses) { 
    ## Progress bar 
    $j++ 
    $percentdone2 = (($j/$TotalIPs) * 100) 
    $percentdonerounded2 = "{0:N0}" -f $percentdone2 
    Write-Progress -Activity "Performing pings" -CurrentOperation "Pinging IP: $address (IP $j of $TotalIPs)" -Status "$percentdonerounded2% complete" -PercentComplete $percentdone2 
    ## End progress bar 
    if (Test-Connection -ComputerName $address -Count 2 -Quiet) { 
     Write-Host "$address responded" -ForegroundColor Green 
    } else { 
     Write-Warning "$address does not respond to pings"    
    } 
} 
Write-Host "" 
Write-Host "Done!" 

答えて

0

の簡素化、簡素化...

Get-Content $InputFile | ForEach-Object { 
    $ip = $_ 

    try { 
     $dns = [Net.Dns]::Resolve($ip) 
    } catch { 
     Write-Host "$address not found.`n$_" 
    } 

    New-Object -Type PSObject -Property @{ 
     'Address'  = $ip 
     'Hostname' = $dns.Hostname 
     'AddressList' = $dns.AddressList 
     'Online'  = [bool](Test-Connection $ip -Count 2 -Quiet) 
    } 
} | Export-Csv 'C:\path\to\output.csv' -NoType 
+0

私は返事をありがとうございました。しかし、私はこのスクリプトで何が起こっているか完全に理解していません。私は理解しているものもありますが、...私はそれで遊んで何が起こるかを見なければなりません。 –

+0

コードについて理解していないのですか?入力ファイルからアドレスを読み取り、各アドレスをホスト名に解決し、ホスト名、アドレス、オンライン状態のカスタムオブジェクトを作成し、オブジェクトをCSVにエクスポートします。カスタムオブジェクトは 'Export-Csv'が入力として期待するものです。 –

+0

ああ、私は参照してください。私はPSに精通していません。応答が遅れて申し訳ありません。どうもありがとうございました。 –

関連する問題