簡體   English   中英

Powershell 命令在 output 文件中沒有包含錯誤

[英]Powershell command did not include error in output file

我有下面的代碼,用於 Powershell; 它表現良好,只是我需要 output 文件來包含 IP 未解析為名稱時的錯誤消息。

Get-Content inputfile.txt | 
    foreach-object { [System.Net.Dns]::GetHostEntry($_)  } | 
    out-file -filepath outputfile.txt

目前,我可以看到 Powershell window 上顯示的紅色錯誤消息。但我希望這些與輸入文件中列出的每個項目的結果一起出現在 output 文件中。

提前致謝!

由於.GetHostEntry(..)沒有給您關於哪個 IP 無法解析的明確提示,因此最好創建一個 object 將您嘗試解析的 IP 地址與方法調用相關聯。 這還允許您擁有更好的導出類型,而不是普通的.txt文件,您可以使用Export-Csv將對象導出為.csv

下面的示例使用.GetHostEntryAsync(..)允許我們並行查詢多個主機!

using namespace System.Collections.Generic
using namespace System.Collections.Specialized

(Get-Content inputfile.txt).ForEach{
    begin { $tasks = [List[OrderedDictionary]]::new() }
    process {
        $tasks.Add([ordered]@{
            Input    = $_
            Hostname = [System.Net.Dns]::GetHostEntryAsync($_)
        })
    }
    end {
        do {
            $id = [System.Threading.Tasks.Task]::WaitAny($tasks.Hostname, 200)
            if($id -eq -1) { continue }
            $thisTask = $tasks[$id]
            $thisTask['Hostname'] = try {
                $thisTask.Hostname.GetAwaiter().GetResult().HostName
            }
            catch { $_.Exception.Message }
            $tasks.RemoveAt($id)
            [pscustomobject] $thisTask
        } while($tasks)
    }
} | Export-Csv outputfile.csv -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM