[英]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.