簡體   English   中英

無法從powershell中的Windows搜索中生成電子郵件消息

[英]Not able to spawn off email message from windows search in powershell

我有一個powershell腳本,它直接在Windows搜索索引中搜索電子郵件和文件。 我有以下代碼:

$searchme="my thing to find"
$sql="SELECT System.FileName, System.ItemPathDisplay, System.DateCreated, System.DateModified, system.itemurl, system.itemtypetext FROM SYSTEMINDEX WHERE Contains(System.FileName, '"+$searchme+"') OR Contains('"+$searchme+"')"
$adapter = new-object system.data.oledb.oleDBDataadapter -argumentlist $sql, "Provider=Search.CollatorDSO;Extended Properties=’Application=Windows’;"
$ds      = new-object system.data.dataset
$adapter.Fill($ds)
foreach ($record in $ds.Tables[0].Rows)
{
    $exeparams = $record[4]
    write-host $exeparams
    write-host $exeparams.split(":")[0]
    if ($exeparams.split(":")[0] -eq "mapi15")
    {
        $exeparams2="mapi://" + $exeparams.substring(8)
    }
    write-host $exeparams
    write-host "start"
    $exe="start"
    $exe+" "+$exeparams | Out-File 'file.txt' -encoding Unicode
    write-host "start-process"
    Start-Process $exeparams
    Start-Process $exeparams2
    write-host "andpersand process"
    &$exe $exeparams
    &$exe $exeparams2
    write-host "dotnet"
    $proc = [Diagnostics.Process]::Start($exeparams)
    $proc.WaitForExit()
    $proc = [Diagnostics.Process]::Start($exeparams2)
    $proc.WaitForExit()
}

有幾個“shell”調用,因為我試圖弄清楚它是否是一個進程產生問題。 文件沒有問題。 然而,如果我離開mapi15,則無法通過此類界面進行電子郵件,如果我將mapi15更改為mapi,則無法指定錯誤。 我相信使用協議“mapi://”從java打開Outlook的郵件可能是解決方案,但如果是,我不知道如何在powershell中應用它。 謝謝您的幫助。

好吧,這需要比我預期的更多的工作,我責備Office 2013。 這是簡短的回答:

$exeparams2 = $exeparams -replace "^mapi15", "mapi"
& start $exeparams2

這是現在為我打開電子郵件的代碼。 該代碼昨天沒有這樣做,它只是告訴我:

要么沒有默認郵件客戶端,要么當前郵件客戶端無法滿足郵件請求。 請運行Microsoft Outlook並將其設置為默認郵件客戶端。

真是這樣,因為我確實有Outlook,實際上它正在運行,並且是與電子郵件相關的所有內容的默認郵件應用程序。 這讓我很生氣,並讓我想要找出WTF是錯的,如果我能解決的話。 對此的回答是“我不確定WTF是錯的,除了MS的命名更改”,“是的,我可以解決它”。

我終於找到了對我有用的修復程序( 我相信這可能是Office 2013 / Office 365特定的 )在這個帖子的底部找到了:

https://social.technet.microsoft.com/Forums/office/en-US/64c0bedf-2bcd-40aa-bb9c-ad5de20c84be/cannot-send-email-with-microsoft-outlook-2010-64-bit-from-土坯前景-不認可,作為?論壇=前景

這個過程很簡單。 更改2個注冊表項,然后重新設置您的默認郵件應用程序。 注冊表條目:

HKLM:\\ SOFTWARE \\ CLIENTS \\郵件(默認)
HKLM:\\ Software \\ Clients \\ Mail \\ Microsoft Outlook(默認)

(Default)的值從“Microsoft Outlook”更改為“Outlook”。

之后我將Outlook設置為默認設置(在Win8的控制面板>所有控制面板項>默認程序>設置默認程序然后選擇Outlook,並選擇第一個選項使其默認為所有擴展它已注冊)。 完成后,我能夠運行上面修改過的代碼來啟動我搜索索引的電子郵件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM