通过 powershell 从 outlook 中删除邮件
Delete emails from outlook via powershell
我正在尝试 运行 共享邮箱 (Exchange) 上的 powershell 脚本。当我 运行 我的个人邮箱中的脚本有效时,尽管当我将其更改为共享邮箱时,我只收到错误消息。
$outlook = new-object -comobject outlook.application
$logfile = $PSScriptRoot + "\email.log"
$namespace = $outlook.GetNameSpace('MAPI')
$folder = $namespace.Folders.Item('shared.mailbox@company.com').Folders.Item('Inbox')
$folder_2 = $namespace.Folders.Item('shared.mailbox@company.com').Folders.Item('Deleted Items')
$date_check = (get-date).AddDays(-1) | Get-Date -UFormat "%m-%d-%Y"
$date_check_deleted_items = (get-date).AddDays(-2) | Get-Date -UFormat "%m-%d-%Y"
$emailToDelete = $folder.items | Where-Object { $_.ReceivedTime -lt $date_check; }
$emptyDeletedItems = $folder_2.items | Where-Object { $_.ReceivedTime -lt $date_check_deleted_items; }
Get-Date | Out-File $logfile -Append
"Amount of emails being deleted:" | Out-File $logfile -Append
$emailToDelete.Count | Out-File $logfile -Append
"Subject of Emails in the Inbox folder:" | Out-File $logfile -Append
$emailToDelete.subject | Out-File $logfile -Append
"Amount of emails being deleted from deleted items:" | Out-File $logfile -Append
$emptyDeletedItems.Count | Out-File $logfile -Append
"Subject of Emails in the Deleted Items folder folder:" | Out-File $logfile -Append
$emptyDeletedItems.subject | Out-File $logfile -Append
write-host "Emails received before" $date_check "(MM/dd/YYYY) will be deleted"
write-host "deleting emails in 5"
Start-Sleep -s 1
write-host "deleting emails in 4"
Start-Sleep -s 1
write-host "deleting emails in 3"
Start-Sleep -s 1
write-host "deleting emails in 2"
Start-Sleep -s 1
write-host "deleting emails in 1"
Start-Sleep -s 1
write-host "deleting" $emailToDelete.Count "emails"
#$EmailToDelete.Delete()
write-host $emptyDeletedItems.count "Emails to be deleted from the deleted items folder"
write-host "Emails received before" $date_check_deleted_items "(MM/dd/YYYY) will be deleted from that folder"
$emptyDeletedItems.Delete()
write-host $emailToDelete.count "Emails are deleted from the Inbox folder and" $emptyDeletedItems.count "Emails are deleted from the Deleted Items folder, application will close in 5 seconds"
Start-Sleep -s 5
我收到以下错误:
The attempted operation failed. An object could not be found.
At C:\Users\username\Desktop\emails.ps1:7 char:1
+ $folder = $namespace.Folders.Item('shared.mailbox@company.com').Fold ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
The attempted operation failed. An object could not be found.
At C:\Users\username\Desktop\emails.ps1:9 char:1
+ $folder_2 = $namespace.Folders.Item('shared.mailbox@company.com').Fo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
你能帮我看看我做错了什么吗?
I'm trying to run a powershell script on a shared mailbox (Exchange)
不完全是这样。您正在尝试使用共享邮箱使 Outlook 自动化。并且该帐户是在 Outlook 中本地配置的。您似乎无法从共享位置访问它。
另一方面,Microsoft 目前不推荐也不支持从任何无人值守的非交互式客户端应用程序或组件(包括 ASP、ASP.NET、 DCOM 和 NT 服务),因为当 Office 在此环境中 运行 时,Office 可能表现出不稳定的行为 and/or 死锁。
如果您正在构建 运行 在服务器端上下文中的解决方案,您应该尝试使用已针对无人值守执行安全处理的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。
在 Considerations for server-side Automation of Office 文章中阅读更多相关信息。
我正在尝试 运行 共享邮箱 (Exchange) 上的 powershell 脚本。当我 运行 我的个人邮箱中的脚本有效时,尽管当我将其更改为共享邮箱时,我只收到错误消息。
$outlook = new-object -comobject outlook.application
$logfile = $PSScriptRoot + "\email.log"
$namespace = $outlook.GetNameSpace('MAPI')
$folder = $namespace.Folders.Item('shared.mailbox@company.com').Folders.Item('Inbox')
$folder_2 = $namespace.Folders.Item('shared.mailbox@company.com').Folders.Item('Deleted Items')
$date_check = (get-date).AddDays(-1) | Get-Date -UFormat "%m-%d-%Y"
$date_check_deleted_items = (get-date).AddDays(-2) | Get-Date -UFormat "%m-%d-%Y"
$emailToDelete = $folder.items | Where-Object { $_.ReceivedTime -lt $date_check; }
$emptyDeletedItems = $folder_2.items | Where-Object { $_.ReceivedTime -lt $date_check_deleted_items; }
Get-Date | Out-File $logfile -Append
"Amount of emails being deleted:" | Out-File $logfile -Append
$emailToDelete.Count | Out-File $logfile -Append
"Subject of Emails in the Inbox folder:" | Out-File $logfile -Append
$emailToDelete.subject | Out-File $logfile -Append
"Amount of emails being deleted from deleted items:" | Out-File $logfile -Append
$emptyDeletedItems.Count | Out-File $logfile -Append
"Subject of Emails in the Deleted Items folder folder:" | Out-File $logfile -Append
$emptyDeletedItems.subject | Out-File $logfile -Append
write-host "Emails received before" $date_check "(MM/dd/YYYY) will be deleted"
write-host "deleting emails in 5"
Start-Sleep -s 1
write-host "deleting emails in 4"
Start-Sleep -s 1
write-host "deleting emails in 3"
Start-Sleep -s 1
write-host "deleting emails in 2"
Start-Sleep -s 1
write-host "deleting emails in 1"
Start-Sleep -s 1
write-host "deleting" $emailToDelete.Count "emails"
#$EmailToDelete.Delete()
write-host $emptyDeletedItems.count "Emails to be deleted from the deleted items folder"
write-host "Emails received before" $date_check_deleted_items "(MM/dd/YYYY) will be deleted from that folder"
$emptyDeletedItems.Delete()
write-host $emailToDelete.count "Emails are deleted from the Inbox folder and" $emptyDeletedItems.count "Emails are deleted from the Deleted Items folder, application will close in 5 seconds"
Start-Sleep -s 5
我收到以下错误:
The attempted operation failed. An object could not be found.
At C:\Users\username\Desktop\emails.ps1:7 char:1
+ $folder = $namespace.Folders.Item('shared.mailbox@company.com').Fold ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
The attempted operation failed. An object could not be found.
At C:\Users\username\Desktop\emails.ps1:9 char:1
+ $folder_2 = $namespace.Folders.Item('shared.mailbox@company.com').Fo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException
你能帮我看看我做错了什么吗?
I'm trying to run a powershell script on a shared mailbox (Exchange)
不完全是这样。您正在尝试使用共享邮箱使 Outlook 自动化。并且该帐户是在 Outlook 中本地配置的。您似乎无法从共享位置访问它。
另一方面,Microsoft 目前不推荐也不支持从任何无人值守的非交互式客户端应用程序或组件(包括 ASP、ASP.NET、 DCOM 和 NT 服务),因为当 Office 在此环境中 运行 时,Office 可能表现出不稳定的行为 and/or 死锁。
如果您正在构建 运行 在服务器端上下文中的解决方案,您应该尝试使用已针对无人值守执行安全处理的组件。或者,您应该尝试找到至少允许 运行 客户端部分代码的替代方案。如果您从服务器端解决方案使用 Office 应用程序,该应用程序将缺少许多 运行 成功所必需的功能。此外,您将承担整体解决方案稳定性的风险。
在 Considerations for server-side Automation of Office 文章中阅读更多相关信息。