[英]I would like to open an file in powershell using the search from 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特定的 )在這個帖子的底部找到了:
這個過程很簡單。 更改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.