以下是我的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?怎么办呢?谢谢
答案 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列