繁体   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