在Powershell中,如何从电子邮件主题行中仅提取7位数字?

时间:2015-02-19 06:45:11

标签: powershell

以下是我的Powershell代码:

$outlook = new-object -com Outlook.Application
$sentMail = $outlook.Session.GetDefaultFolder(6)
$sentMail.Items | % { $_.TaskSubject | Select-String -Pattern '\d{7}' }

因此,这将打印包含7位数字符串的所有电子邮件主题行。但是,我想打印这些行中的7位数字符串。

我相信,我应该使用match。但匹配返回true / false?怎么办呢?谢谢

2 个答案:

答案 0 :(得分:1)

试试这个

$sentMail.Items | % { $RESULT=[Regex]::Match($_.TaskSubject ,"\d{7}"); if($RESULT.Success){$RESULT.Value} }

答案 1 :(得分:0)

我正在回答自己,因为我只想到一种方法:

我们需要另一个管道(|),在这里我们使用match命令:像这样 -

$sentMail.Items | % { $_.TaskSubject | Select-String -Pattern '\d{7}' 
                                     | % {([string]$_) -match '\d{7}' | out-null;                                     $matches) }

打印出来:

Name                   Value
-----                  -----
0                      8293798
0                      8233798
0                      1223798
..etc etc..

但这是2列,我只想要1列