我有一台无人值守运行的 Win 2012 R2 服务器,其中运行着依赖 MS Outlook 2013 的应用程序。我想创建一个每日计划的 PowerShell 脚本,以便平稳关闭 Outlook、创建 VbaProject.OTM 的备份并重新启动 Outlook。
以下方法似乎有效,但我不确定关闭 Outlook 是否可以,如果有更好的方法,我将不胜感激。
stop-process -name OUTLOOK -EA SilentlyContinue
$date = get-date -format "MMddyyyy HHmm"
$fnft = "VbaProject - " + $date + ".OTM"
$source = "C:\Users\OCCReportManager\AppData\Roaming\Microsoft\Outlook\VbaProject.OTM"
$dest = "D:\FD Automation VBA Backups\" + $fnft
copy-item $source $dest
(Get-ChildItem $dest).LastWriteTime = Get-Date
$dest = "G:\PUBLIC\Mission Control\Flight Deck\Automation Source File Repository\" + $fnft
copy-item $source $dest
(Get-ChildItem $dest).LastWriteTime = Get-Date
start-process outlook
答案1
Get-Process Outlook | Foreach-Object { $_.CloseMainWindow() | Out-Null } | stop-process –force
这是我推荐的。我从这里几周前,我已经将它用于几个类似的项目,它似乎可以正常工作,而不会引起任何麻烦或突然终止进程(除非它们已经挂起)。
我之前使用的另一个解决方案是为用户设置一个登录脚本,该脚本(在您的情况下)执行备份,然后启动 Outlook。然后我安排每晚重新启动服务器,这样 Windows 就可以处理进程的停止。不幸的是,这有一个缺点,您需要启用自动登录,以便应用程序可以在用户上下文中运行……尽管设置 1 分钟的密码屏幕保护程序并将服务器锁定在通信/计算机室将大大降低服务器被滥用的可能性
希望这是你需要的