首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在中将.etl文件转换为.txt

在中将.etl文件转换为.txt
EN

Stack Overflow用户
提问于 2022-07-29 18:19:24
回答 2查看 474关注 0票数 0

我正在尝试将.etl文件转换为.txt文件。现在,我使用以下命令从.txt文件中获取.etl文件:

代码语言:javascript
运行
复制
Get-WinEvent -Path $Path -Oldest -ErrorAction SilentlyContinue -ErrorVariable errors | ForEach-Object { "{0},{1},{2},{3},{4}" -f $_.TimeCreated.ToString("yyyy-MM-ddTHH:mm:ss.ffffff"), $_.Id,$_.Level,$_.ProviderName,$_.Message } `
| Add-Content -Path $LogFilePath

然而,的.etl文件相当大,需要大约一个小时才能完成

我想知道是否还有其他方法在txt文件中转换这些etl文件,而不需要太多开销。我试着查看tracerpt工具,但是它只将.etl文件转换为..csv/..xml文件。

EN

回答 2

Stack Overflow用户

发布于 2022-09-23 19:28:47

也许这不是你想要的答案,但我还是推荐你。

不幸的是,没有开箱即用的.NET方式来做这件事.

事件跟踪可能涉及到,但如果您找到它,您将获得更高的性能。

微软有几个关于如何使用.etl和本机API读取C++文件的示例。

看看这个:

https://learn.microsoft.com/en-us/windows/win32/etw/using-tdhformatproperty-to-consume-event-data

票数 0
EN

Stack Overflow用户

发布于 2022-07-29 20:10:31

.Net System.IO调用似乎比Get-Content & Set-Content快。直接将CSV转换为TXT的速度几乎是原来的两倍,并且应该适用于任何其他格式:

代码语言:javascript
运行
复制
# $file1 is a 71,070 line CSV
$file1 = "C:\Users\Username\Desktop\_test.csv"
$file2 = "C:\Users\Username\Desktop\_test.txt"

#### Test 1 - Get-Content -Raw
$start1 = Get-Date
    Get-Content $file1 -Raw | Set-Content $file2
$end1 = Get-Date

#### Test 2 - .NET's System.IO
$start2 = Get-Date
    $txt = [System.IO.File]::ReadAllText("$file1")
    [System.IO.File]::WriteAllText("$file2", $txt)
$end2 = Get-Date

New-TimeSpan –Start $Start1 –End $End1
New-TimeSpan –Start $Start2 –End $End2

# TotalMilliseconds : Attempt [1] 109.3493 [2] 93.7438 [3] 78.1255
# TotalMilliseconds : Attempt [1]  49.4906 [2] 46.8493 [3] 46.8738

在执行字符串操作(如修改时间和日期格式)时,.NET也更快,就像在示例中所做的那样。要获得更好的故障,请查看所有的Stack O question & answers here

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73169541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档