Powershell:清除日益增多的Outlook附件暫存檔

正常情況下在Outlook打開附件會在C:\Users\%Username%\AppData\Local\Microsoft\Windows\INetCache\Content.Outlook\的亂數目錄裡產生一個暫存檔,當你正常關閉的時候應該暫存檔案就會被刪除了,他的路徑是被隱藏的,需要把Cotnet.Outlook目錄完整打出來或是把上面的整串貼進檔案瀏覽器才看的到。至於亂樹目錄紀載在機碼裡。

HKCU:\Software\Microsoft\Office\15.0\Outlook\Security\OutlookSecureTempFolder

但是很多情況下Outlook當掉或是不正常關機,裡面的暫存垃圾就會越來越多,他這個目錄也是也大小限制的,超過的時候就會發生使用者無法沒有權限開啟附件這種奇怪的錯誤訊息。實務上我清理過10G的附件暫存檔。

下面一隻Powershell

1.除了清理Outlook附件檔案殘留的暫存檔
2.清除IE暫存檔Cookie、歷史紀錄等等。
3.清除個人暫存檔案(Local Temp)
你可以試需要用註解方式來使用或不用。
#建議執行的時候將Outlook關閉會清得比較乾淨(附件被開啟的檔案會被因為鎖住而無法刪除)。
#適用於Office 2010/2013,但是2016或是Office365你找到路徑也是可以加上去就好。

#--------------------------------------------------------------------
#Session 1 清除Oulook曾經開啟之附件檔案,自動判斷Office版本與存放位置後清除之。 
#Session 2 清除IE暫存檔。
#Session 3 清除個人產生之暫存檔案。
#Support System:
#windows 7 / 10 Office 2010/2013
#
#                                          By Neo 
#--------------------------------------------------------------------

$Outlook2010Reg = "HKCU:\SOFTWARE\Microsoft\Office\14.0\Outlook\Security"
$Outlook2010Path = (Get-ItemProperty -path $Outlook2010Reg -Name OutlookSecureTempFolder -ErrorAction SilentlyContinue).OutlookSecureTempFolder
$Outlook2013Reg = "HKCU:\SOFTWARE\Microsoft\Office\15.0\Outlook\Security"
$Outlook2013Path = (Get-ItemProperty -path $Outlook2013Reg -Name OutlookSecureTempFolder -ErrorAction SilentlyContinue).OutlookSecureTempFolder
$ValidPath2010 = Test-Path $Outlook2010Reg
$ValidPath2013 = Test-Path $Outlook2013Reg

# Session 1 Clear Outlook Temp
IF ($ValidPath2010 -eq $true)
{
    Get-ChildItem $Outlook2010Path -Recurse | Remove-Item -Confirm:$false -force -Recurse
}
IF ($ValidPath2013 -eq $true)
{
    Get-ChildItem $Outlook2013Path -Recurse | Remove-Item -Confirm:$false -force -Recurse
}
#Session 2
#Clear IE History
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 1
#Clear IE Cookies
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 2
#Clear IE Temp
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 8
#Clear IE formdata
RunDll32.exe InetCpl.cpl, ClearMyTracksByProcess 16

#Session 3 Clear User Temp
Get-ChildItem $env:TEMP -Recurse | Remove-Item -confirm:$false -force -Recurse -ErrorAction SilentlyContinue