2017-02-08 1 views
0

私は雇用を開始する前にここで働いていた以前の人からExcel形式で抽出された私のLAN(1000以上)のホストのリストを持っています。私は各ホストのIPを知る必要があります。PowershellはプログラムによるホストからのIPを

私はいくつかの自動抽出が必要です(IPを取得するために手動ですべてのホストにpingするよりも賢明な方法が必要です)。私はSOを見つけてthis questionと読む。 PowerShellを使用することは、私が必要とするものを自動化するための良い一歩を意味します。

しかし、積み重ねているのは、Excelファイルを入力(またはテキスト)として使用し、関連するIPを含む出力ファイルを提供するために、このコマンドを(PowerShellで)自動化する方法です。

アップデート:私は考えているコード:

$servers = get-content "C:\scr\Servers.txt" 
foreach ($Server in $Servers) 
{ 
    $Addresses = $null 
    try { 
     $Addresses =  [System.Net.Dns]::GetHostAddresses("$Server").IPAddressToString 
    } 
    catch { 
     $Addresses = "Server IP cannot resolve." 

    } 
    foreach($Address in $addresses) { 
     write-host $Server, $Address 
    } 
} 

入力として使用するExcelファイルは、単一の列に行でホスト名を行が含まれています。このExcelファイルは簡単にテキスト形式に変換することができます(これは既に私がすでに行っているので、Servers.txtファイルになります)。

このコードの問題は、出力がPowershellウィンドウにのみ表示され、ファイルは表示されないことです。

+0

Excelファイルには、コンピュータに関するどのようなデータが含まれていますか? –

+1

独自のコードのサンプルを提供できますか? SOはスクリプト作成サービスではありません。ここの人々は通常喜んで支援しますが、努力が必要です(私たちはあなたのためにあなたの支払った仕事をするためではないので)。 1つのヒント:de .NETクラスSystem.Net.Dnsには、ホスト名をIPアドレスに解決するための複数のメソッドが含まれています。 – bluuf

+0

> C:\ pathtooutput.txtのようなコードをコードのどこかに追加しますか?どこ? – Gab2020

答えて

1
 $output = @() 
     $servers = get-content "C:\scr\Servers.txt" 
     foreach ($Server in $Servers) 
     { 
      $Addresses = $null 
      try { 
       $Addresses = ((Test-Connection $Server | select -skip 3).IPV4Address).IPAddressToString 
      } 
      catch { 
       $Addresses = "Server IP cannot resolve." 

      } 

      $output += New-object psobject -property @{ 
         servername = $server 
         Addresses = $Addresses 
         } 
    } 

     $output | select servername, Addresses | export-csv ".\Addresslist.csv" -NoTypeInformation 
+0

ありがとう、それは動作しますが、エラーはありませんが、出力ファイル、すなわちIPに不可欠な情報がありません。出力ファイルのサンプル:ここではOURTPUTFILEを開始しています。「hostename0」、「Server IP can not resolve。」 "hostname1"、 "Server IP can not resolve。" "hostname2"、 "hostname3"、 "Server IP can not resolve。" "hostname4"、 "hostname5"、OUTPUTFILEをここで終了します。 などです。 – Gab2020

+0

今すぐ確認してください。私はコードを編集しました。 –

+0

実行中ですが、まだ終了していませんが、いくつかのホストでエラーが発生します。 "テスト接続:コンピュータ 'xyz'への接続のテストに失敗しました:要求された名前は有効ですが、要求されたタイプのデータは見つかりませんでした。私はこれを取り除く方法が不明で、ホストの残りの部分については情報が正確で、出力ファイルに登録されているかどうかもわかりません。いいえ、何も登録されていませんでした。\ – Gab2020

0

は最後に、このコードはtweakening( - これらのIPアドレス - スクリプトの実行中にもPowerShellのウィンドウでその結果を表示)した後、successfuly取り組んできました。最後に、結果はAddresslist.csvファイルにエクスポートされます。

$output = @() 
    $servers = get-content "C:\scr\Servers.txt" 
    foreach ($Server in $Servers) 
    { 
     $Addresses = $null 
     try { 


      $Addresses =  [System.Net.Dns]::GetHostAddresses("$Server") 
     } 
     catch { 
      $Addresses = "Server IP cannot resolve." 

     } 

     $output += New-object psobject -property @{ 
        servername = $server 

        Addresses = $Address 


        } 

     foreach($Address in $addresses) { 
     write-host $Server, $Address 
             } 


} 

    $output | select servername, Addresses | export-csv ".\Addresslist.csv" -NoTypeInformation 
関連する問題