Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 从文档中提取数据_Powershell - Fatal编程技术网

Powershell 从文档中提取数据

Powershell 从文档中提取数据,powershell,Powershell,我有一个文本文件,其数据如下: 07:30 - 07:45PMTS09526052 | Sev9 | Location| | Due: 12/23/2016 NON PC HARDWARE - TROUBLESHOOT SW Complete this Job 这些行将在整个文档中显示多次,并有变化,例如第一行字母“PMT”后面的字母数字字符 我需要找到一种方法,这样每当它找到“PMT”时,它就会把它和接下来的9个符号拖到CSV中,然后把“完成这项工作”行放在CSV的下一个位置 我知道我需要将

我有一个文本文件,其数据如下:

07:30 - 07:45PMTS09526052 | Sev9 | Location| | Due: 12/23/2016
NON PC HARDWARE - TROUBLESHOOT SW
Complete this Job
这些行将在整个文档中显示多次,并有变化,例如第一行字母“PMT”后面的字母数字字符

我需要找到一种方法,这样每当它找到“PMT”时,它就会把它和接下来的9个符号拖到CSV中,然后把“完成这项工作”行放在CSV的下一个位置

我知道我需要将模式设置为
PMT[ST][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
(其中
$WLDir
是文件名):


我不知道我的下一步行动是隔离该部分和第2行,并将它们设置为CSV中的单元格数据。有人能帮忙吗?我很抱歉,因为我好像没有在这里做作业,但是我一直在尝试使用一些引用,但是我只是被卡住了。

不确定100%的结果应该是什么样子,但是我认为你需要一个CSV,代码<>时间<代码>,<代码>主题和<代码>状态< /代码>专栏:

Select-String $WLDir -pattern '(PMT[ST]\d{8})' -Context 0,2 | ForEach-Object {
    [PSCustomObject]@{
        Time = $_.Matches.Groups[1].Value
        Topic = $_.Context.PostContext[0]
        Status = $_.Context.PostContext[1]
    }
} | ConvertTo-Csv -NoTypeInformation
这将输出:

"Time","Topic","Status"
"PMTS09526052","NON PC HARDWARE - TROUBLESHOOT SW","Complete this Job"

这就是我要做的一切。非常确定
[S|T]
[ST]
一样可以正常工作,因为后者是range@Matt我想是一样的,只是我喜欢的符号。范围将是[S-T](在本例中也是相同的;-))精彩绝伦!杰出的我以为会是。。。哦,我不知道。也许要复杂一百万倍。谢谢谢谢,我还喜欢
Select-String
cmdlet的
-Context
参数。没有它,情况会更复杂;-)@谢谢。您是对的,
[S|T]
包含管道字符。我修好了。
"Time","Topic","Status"
"PMTS09526052","NON PC HARDWARE - TROUBLESHOOT SW","Complete this Job"