azure - 使用 powershell、cmd 或 python 自动创建 M365 Outlook 配置文件
问题描述
目标是什么- 在没有客户/用户干预的情况下自动编程 Outlook 配置文件。他们应该只需点击 Outlook 并首次显示电子邮件。最终用户无需设置或配置。
我为一个拥有大约 70 个客户的 MSP 工作。每个客户都使用 Office E3 许可证用于办公应用程序,但他们使用第三方公司进行电子邮件托管(中间/服务器数据)。
这种特殊的差异使得使用基于自动发现和 AD 用户的 smtp 地址的 ZeroConfigExchange 自动设置 Outlook 配置文件变得非常困难。用户正在使用 Azure AD 连接到计算机,但 Azure AD 不知道用户的 smtp 地址是什么,因为他们没有与 microsoft 进行在线交换,而是与 intermedia/serverdata 进行了在线交换。
所以我一直在努力寻找任何方法来根据电子邮件地址、服务器地址和凭据自动创建 Outlook 配置文件;这样当用户第一次到达那里的设备时,它会将 Outlook 配置文件添加到那里的帐户。
我调查的内容:
无论如何尝试 ZeroConfigExchange - 失败 - 它不知道 smtp 信息在哪里创建配置文件。
尝试使用 PowerMapi 的 New-MapiProfile - 失败 - 从这里发现:https ://superuser.com/questions/1141519/configuring-outlook-with-powershell这在 office 2016 或 office 365 上不起作用,因为他们更改了凭据设置
尝试使用 O365 配置工具制作包含电子邮件配置文件的定制版办公应用程序- 失败了 - 显然他们将此功能从较新的 O365 配置工具中移除。这曾经是我的研究所说的旧版本,但现在不再存在了:(我没有足够的图片代表点,所以这里是我的图片的链接) https://i.ibb.co/jftNVg2/ help1.png https://i.ibb.co/8ggz5hg/help2.png
尝试使用我从这里找到的这个 powershell 脚本:
$continue = [System.Windows.Forms.MessageBox]::Show("This will delete any outlook profile on your machine. Do you want to continue?", "Continue?", 'YesNo', 'Question')
if ($continue -eq "Yes")
{
# Create Outlook COM instance
Add-Type -assembly "Microsoft.Office.Interop.Outlook"
$Outlook = New-Object -comobject Outlook.Application
$namespace = $outlook.GetNameSpace('MAPI')
$outbox = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderOutbox)
$Drafts = $namespace.GetDefaultFolder([Microsoft.Office.Interop.Outlook.OlDefaultFolders]::olFolderDrafts)
do
{
$set = $outbox.Items
foreach ($item in $set)
{
[void]$item.move($Drafts)
}
Start-Sleep -Seconds 3 | Out-Null
}
while ($outbox.items.count -ne 0)
# Quick rest before killing COM
Start-Sleep -Seconds 3 | Out-Null
# Kill Outlook COM instance
$outlook.Quit() | Out-Null
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($outlook) | Out-Null
if (Get-Process outlook)
{
Get-Process outlook | Stop-Process | Out-Null
}
if (Test-Path "$Env:appdata\Microsoft\Outlook\")
{
Try
{
$void = Remove-Item "$Env:appdata\Microsoft\Outlook\" -force -recurse | Out-Null
}
Catch
{
[void][System.Windows.Forms.MessageBox]::Show("A file was still in use, try again.", "Information", 'OK', 'Error')
}
}
if (Test-Path HKCU:\Software\Microsoft\Office\16.0\Outlook)
{
#New-ItemProperty -Path HKCU:\Software\Microsoft\Office\16.0\Outlook\AutoDiscover -Name ZeroConfigExchange -Value 1 -PropertyType DWORD -Force
Remove-Item "HKCU:\Software\Microsoft\Office\16.0\Outlook\Profiles\*" -Recurse -Force | Out-Null
Remove-ItemProperty -Path HKCU:\Software\Microsoft\Office\16.0\Outlook\Setup\ -name First-Run | Out-Null
Start-Process 'C:\Program Files (x86)\Microsoft Office\root\Office16\outlook.exe' | Out-Null
}
else
{
#do nothing
}
}
else
{
[void][System.Windows.Forms.MessageBox]::Show("Nothing was done", "Information", 'OK', 'Information')
}
这能够显示电子邮件设置的提示,但无论如何要在这个 powershell 脚本中包含它?
我还从她的电子版中尝试了一点 mfcmapi 应用程序: https ://docs.microsoft.com/en-us/office/client-developer/outlook/mapi/how-to-create-an-outlook-profile-使用-mfcmapi
但是我只是按照微软的文档和研究随机错误并没有真正让我走远。看起来好像 mfcmapi 完全坏了。
我也在这里问了这个问题:https ://superuser.com/questions/1640825/autoconfigure-m365-outlook-profile昨天但我在这个线程中添加了更多我的故障排除方法。我还将向 Microsoft 提出支持请求,看看是否有任何想法。
如果我为其他人找到一个好的答案,我会让每个人都知道。
感谢您的时间,
解决方案
您还可以尝试ProfMan库(免责声明:我是它的作者) - 它可以很容易地用于为 Office 365 邮箱预先创建 Outlook 配置文件 - 请参阅https://www.dimastr.com/redemption/profman_examples.htm# ROH_Profile_Outlook2016
推荐阅读
- linux - 使用 telnet 在远程 Linux 机器上运行基于 gui 的应用程序
- android - 如何在spokestack-android中指定自定义唤醒词
- linux - AWS Linux - Installing packages (automatically install dependent packages)
- firebase - 错误类型错误:无法读取 Ionic 4 中未定义的属性“verifyPhoneNumber”
- c# - 如何使用 C# MongoDB 驱动程序选择性地传递 IClientSessionHandle?
- excel - 使用 Windows Powershell 在 Excel 中保存 .xlsm 文件类型
- java - 使用模式注册表在 MSK 主题中生成记录时连接被拒绝错误
- r - 查找观察是否在组内出现背靠背
- java - 理解方法 javax.persistence.EntityManager.refresh(Object entity)
- outlook - Outlook Web 插件 - 更改标题栏的颜色