提取链接并在其中保存附件--PowerShell

提取链接并在其中保存附件--PowerShell,powershell,Powershell,我试图从电子邮件正文中提取一个链接,并将附件保存在该链接中 $Folder = "InBox" Add-Type -AssemblyName microsoft.office.interop.outlook $Outlook = New-Object -ComObject Outlook.Application $Namespace = $Outlook.GetNameSpace("MAPI") $Email = $NameSpace.Folders.Item(1).Folders.Item($

我试图从电子邮件正文中提取一个链接,并将附件保存在该链接中

$Folder = "InBox"
Add-Type -AssemblyName microsoft.office.interop.outlook
$Outlook = New-Object -ComObject Outlook.Application
$Namespace = $Outlook.GetNameSpace("MAPI")
$Email = $NameSpace.Folders.Item(1).Folders.Item($Folder).Items
$extracts = $Email | Where-Object {$_.subject -match "PITM*"}

$extracts | ForEach-Object {
    $email = $_.Body 
    #$lines = $email | Measure-Object -Line

    if($email -match '<(.*?)>'){
     "Match Found"     
     $url = $matches[1]          
     }
     $url
     $output = "H:\foo.DAT"

    $Process = new-Object System.Diagnostics.Process
    $Process.StartInfo.WindowStyle="Hidden"
    $Process.StartInfo.FileName="chrome.exe"
    $Process.StartInfo.Arguments=$url
    $Process.Start()    

}
        $Process.Dispose()         
$Folder=“收件箱”
添加类型-AssemblyName microsoft.office.interop.outlook
$Outlook=新对象-ComObject Outlook.Application
$Namespace=$Outlook.GetNameSpace(“MAPI”)
$Email=$NameSpace.Folders.Item(1).Folders.Item($Folder).Items
$extracts=$Email | Where Object{$\ subject-匹配“PITM*”}
$extracts | ForEach对象{
$email=$\正文
#$lines=$email |测量对象-行
如果($email-匹配“”){
“找到匹配项”
$url=$matches[1]
}
$url
$output=“H:\foo.DAT”
$Process=新对象System.Diagnostics.Process
$Process.StartInfo.WindowStyle=“隐藏”
$Process.StartInfo.FileName=“chrome.exe”
$Process.StartInfo.Arguments=$url
$Process.Start()
}
$Process.Dispose()
电子邮件正文如下所示:

编号:PITM0008575

申请截止日期:

完成日期:

完成日期:

附件:Report foo.txt

以下是我遇到的两个问题:

  • 脚本没有拉上第二个链接
  • 我无法保存由于打开链接而产生的附件 请帮忙

    这个怎么样

    #sample data
    $email = "Number: PITM0008575
    <https://a.com/nav_to.do?uri=foo%3Fsys_id=58689b056f90a60002da186e6b3ee484%26sysparm_stack=u_production_item_list.do%3Fsysparm_query=active=true>
    
    
    Requested due date: 
    
    Fulfilled date:
    
    Completed date:
    
    Attachments:  Report foo.txt
    <https://a.com/sys_attachment.do?sys_id=829893456f90a60002da186e6b3ee402>"
    
    $regex = [regex]"<(.*?)>"
    $URLmatches = $regex.Matches($email)
    
    $reportURL = $URLmatches.Groups[1].Value
    $downloadURL = $URLmatches.Groups[2].Value
    
    $output = "$env:USERPROFILE\Desktop\foo.dat"
    (New-Object System.Net.WebClient).DownloadFile($downloadURL, $output)
    
    #示例数据
    $email=“编号:PITM0008575
    申请截止日期:
    完成日期:
    完成日期:
    附件:Report foo.txt
    "
    $regex=[regex]“”
    $URLmatches=$regex.Matches($email)
    $reportURL=$URLmatches.Groups[1]。值
    $downloadURL=$URLmatches.Groups[2]。值
    $output=“$env:USERPROFILE\Desktop\foo.dat”
    (新对象系统.Net.WebClient).DownloadFile($downloadURL,$output)
    
    您好,您是否检查了
    $matches
    ?如果您想下载链接指向的文件,我不确定Chrome是否是您的最佳选择(可能是IE automation或
    Invoke WebRequest
    )。是的,matches[0]包含链接,matches[1]不包含链接。匹配项[2]为空。我使用了IE,但它抛出了一个错误,IE引擎不可用或未配置(两者都无效,因为我已经使用了一段时间)。好的,很好。无法提取链接,但组[3]。值为。但是输出有html,而不是附件。尽管如此,我还是会继续尝试。此外,URL会重定向到打开下载对话框的页面。为此,我尝试了两种失败的方法:1。使用Webclient下载并保存文件。2.打开IE对象,导航到URL;创建WScript Shell并发送保存密钥。任何建议!(很抱歉,无法保存代码)我不知道您连接的是哪种web服务器,如果URL不可预测,我恐怕无法在这里进一步帮助您。