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