提取链接并在其中保存附件--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不可预测,我恐怕无法在这里进一步帮助您。