powershell select-string输出到文件

时间:2014-11-14 12:00:38

标签: powershell

我正在使用powershell在htm文件中找到一个电子邮件地址并将其写入文本文件。 我正在使用select-string查找字符串OK,但是将行号和电子邮件地址写入文件。

我想要的只是电子邮件地址!这看起来很简单,但我无法破解它。

这是我的代码:

$List_htm = Get-ChildItem -Filter *.htm

# Loop:
foreach ($htm in $List_htm)
{
    # Locate recipient email address to send to:
    # Regex pattern to match:
    $pattern = '(^\W*.*@.*\.{1,}\w*$)'

    $sel = select-string -list $htm -pattern $pattern | Select-Object Line
    If ($Sel -eq $null)
{
    write-host "FAILS - $htm does NOT contain $pattern"
}
Else 
{
    write-host "WORKS! $pattern `n$sel"
} 

Write-host "end"

    $EmailAddressee = $PDFFolder + "EmailAddressee.txt"
    $sel | Out-File $EmailAddressee
}

然而,emailaddressee.txt看起来像这样:

Line                                                                                                                                                                    
----                                                                                                                                                                    
                fred.bloggs@helpmeplease.com      

我想要的只是一行,其电子邮件地址位于:

fred.bloggs@helpmeplease.com      

我显然可以在powershell中进一步处理这个结果文件来获得这个,但我希望有人能想出一个简单的一阶段结果。

由于

伊恩

1 个答案:

答案 0 :(得分:4)

更改以下行:

$sel = select-string -list $htm -pattern $pattern | Select-Object Line

要:

$sel = select-string -list $htm -pattern $pattern | Select-Object -ExpandProperty Line

这将确保您编写对象的属性而不是对象本身的文本表示