Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> อีเมล

สร้างลายเซ็น Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory

บทความนี้จะแสดงวิธีสร้างลายเซ็นผู้ใช้ใน Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory สถานการณ์: ครั้งแรกที่ผู้ใช้โดเมนใหม่ล็อกอินเข้าเวิร์กสเตชัน สคริปต์ PowerShell จะสร้างไฟล์ลายเซ็น Outlook พร้อมข้อมูลติดต่อจาก AD

เพื่อให้สคริปต์ทำงานถูกต้อง ผู้ใช้ทุกคนใน AD ต้องมีแอตทริบิวต์ที่จำเป็นครบถ้วน ตัวอย่างนี้ใช้แอตทริบิวต์ AD ต่อไปนี้ในลายเซ็น:

  • ชื่อเต็ม (ในที่นี้เก็บในแอตทริบิวต์ Description)
  • ตำแหน่ง (Title)
  • ชื่อบริษัท (Company)
  • รหัสไปรษณีย์ เมือง ที่อยู่ (PostalCode, City, StreetAddress)
  • เบอร์โทรศัพท์ (OfficePhone)
  • อีเมล (Mail)
  • เว็บไซต์ (Homepage)

สร้างลายเซ็น Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory

ต้องสร้างไฟล์เทมเพลตลายเซ็น Outlook 3 ไฟล์ รูปแบบ htm (HTML), rtf (Rich Text) และ txt (Plain Text) รูปแบบ เนื้อหา และลักษณะของเทมเพลตต้องสอดคล้องกับนโยบายลายเซ็นอีเมลองค์กร

สร้างไฟล์ signature.htm ด้วยโค้ด HTML ดังนี้:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head></head>
<body>
<div id style="font-family:Arial&;color:#5B9BD5;">
<span style="font-size:10pt;color:#000000;">
<b><p>Best Regards</p>
<p>@NAME</p> </span>
<span style="font-size:9.0pt;">
<p>&nbsp;</p>
<p>@DESCRIPTION</p>
<p>@COMPANY</p></b>
<p> &nbsp;</p></span>
<span style="font-size:8.0pt;">
<p> @POSTALCODE, @CITY, @STREETADDRESS</p>
<p> Phone.@OFFICEPHONE</p>
<p> <a href="https://@WEBSITE">@WEBSITE</a></p>
<p>e-mail:<a href="mailto:@EMAIL">@EMAIL</a></span>
</div>
</body>
</html>

สร้างลายเซ็น Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory

เนื้อหาของไฟล์ signature.rtf และ signature.txt ควรเป็นดังนี้:

Best Regards,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Phone. @OFFICEPHONE
e-mail:@EMAIL
site:@WEBSITE

สร้างโฟลเดอร์ OutlookSignature ใน C:\Users\Public\Downloads เพื่อเก็บเทมเพลตลายเซ็นและลายเซ็นของผู้ใช้ ใน C:\Users\Public\Downloads\OutlookSignature สร้างโฟลเดอร์ย่อย Templates และคัดลอกไฟล์เทมเพลต 3 ไฟล์เข้าไป สามารถทำด้วยมือหรือผ่าน Group Policy Preferences (GPP)

สร้างลายเซ็น Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory

สร้างไฟล์ใหม่ outlooksignature.ps1 ด้วยโค้ด PowerShell ดังนี้ (จะอธิบายแต่ละบล็อกสั้นๆ)

กำหนดตัวแปร: $User ชื่อผู้ใช้ที่รันสคริปต์ ระบุนามสกุลและพาธของไฟล์ในตัวแปรอื่นๆ เคล็ดลับ ใน Windows 7 ต้องติดตั้ง RSAT และเปิดใช้งาน Active Directory Module For Windows PowerShell (Control Panel → Programs and Features → Turn On/Off Windows Features → Remote Server Administration Tools → Role Administration Tools → AD DS And AD LDS Tools

$User = $env:UserName
$FileName = "signature"
$FileExtension = "htm","rtf","txt"
$Path = "C:\Users\Public\Downloads"
$PathSignature = "$Path\OutlookSignature"
$PathSignatureTemplates = "$Path\OutlookSignature\Templates"
$PathSignatureUser = "$PathSignature\$User"
$AppSignatures =$env:APPDATA + "\Microsoft\Signatures"

Import โมดูล PowerShell เข้าถึง AD ใช้ Get-ADUser ดึงค่าแอตทริบิวต์ที่ต้องการเก็บใน $AD_user

Import-module activedirectory
$AD_user = Get-ADUser $User -Properties Title,Company,Description,Fax,HomePage,Mail,OfficePhone,PostalCode,City,StreetAddress

สร้างโฟลเดอร์เก็บไฟล์ลายเซ็นผู้ใช้ และคัดลอกเทมเพลตเข้าไป:

New-Item -Path "$PathSignature\$User" -ItemType Container –Force
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates\$FileName.$Ext" "$PathSignatureUser\$FileName.$Ext"
}

ใช้คุณสมบัติ replace แทนที่ข้อมูลในเทมเพลตด้วยข้อมูลผู้ใช้จาก AD:

foreach ($Ext in $FileExtension)
{
(Get-Content "$PathSignatureUser\$FileName.$Ext") | Foreach-Object {
$_`
-replace "@NAME", $AD_user.Description `
-replace "@DESCRIPTION", $AD_user.title `
-replace "@COMPANY", $AD_user.Company `
-replace "@STREETADDRESS", $AD_user.StreetAddress `
-replace "@POSTALCODE", $AD_user.PostalCode `
-replace "@CITY", $AD_user.City `
-replace "@OFFICEPHONE", $AD_user.OfficePhone `
-replace "@EMAIL", $AD_user.Mail `
-replace "@WEBSITE", $AD_user.Homepage `
} | Set-Content "$PathSignatureUser\$FileName.$Ext"
}

คัดลอกไฟล์เทมเพลตลายเซ็นไปที่โฟลเดอร์ที่ Outlook 2010/2013/2016 เก็บลายเซ็น — %APPDATA%\Microsoft\Signatures (C:\Users\username\AppData\Roaming\Microsoft\Signatures)

foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureUser\$FileName.$Ext" "$AppSignatures\$User.$Ext"
write-host "$PathSignatureUser\$FileName.$Ext"
write-host "$AppSignatures\$User.$Ext"
}

เพื่อให้ Outlook ใช้ไฟล์เทมเพลตลายเซ็นเหล่านี้เมื่อเริ่มต้น ให้ทำดังนี้:

  1. ลบค่า First-Run จาก HKEY_CURRENT_USER\Software\Microsoft\Office\< Office_Version>\Outlook\Setup
  2. ใน HKEY_CURRENT_USER\Software\Microsoft\Office\< Office version>\Common\MailSettings สร้างค่า string 2 ค่า ชื่อ NewSignature และ ReplySignature ซึ่งจะมีชื่อเทมเพลตและลายเซ็น (ในที่นี้ชื่อเทมเพลตเหมือนชื่อบัญชี AD)

เพื่อทำงานกับเวอร์ชัน MS Office ต่างๆ ต้องเพิ่มโค้ดนี้:

#Office 2010
If (Test-Path HKCU:'\Software\Microsoft\Office\14.0') {
Remove-ItemProperty -Path HKCU:\Software\Microsoft\Office\14.0\Outlook\Setup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'\Software\Microsoft\Office\14.0\Common\MailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'\Software\Microsoft\Office\14.0\Common\MailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}
#Office 2013
If (Test-Path HKCU:'\Software\Microsoft\Office\15.0') {
Remove-ItemProperty -Path HKCU:\Software\Microsoft\Office\15.0\Outlook\Setup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'\Software\Microsoft\Office\15.0\Common\MailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'\Software\Microsoft\Office\15.0\Common\MailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}

สร้างลายเซ็น Outlook 2010/2013 อัตโนมัติจากข้อมูล Active Directory

ตั้งค่าให้สคริปต์ PowerShell นี้รันครั้งเดียวผ่าน Group Policy Preferences เมื่อผู้ใช้ล็อกอิน ผลลัพธ์: Outlook จะใช้ลายเซ็นที่สร้างสำหรับอีเมลาออตโก้ง รูปแรกของบทความแสดงตัวอย่างลายเซ็นนี้

เคล็ดลับเพิ่มเติม

  • หาก Outlook แสดงลายเซ็น HTM มีช่องว่างบรรทัดใหญ่ (double spacing) เป็นบั๊กของ Outlook ควรสร้างลายเซ็น HTM ใน Outlook โดยตรง และนำมาใช้เป็นเทมเพลต (เก็บใน %APPDATA%\Microsoft\Signatures)
  • สามารถเพิ่มรูปผู้ใช้จากแอตทริบิวต์ thumbnailPhoto ของ AD ลงในลายเซ็นได้ เนื่องจากไม่มีวิธีง่ายๆ เพิ่มรูปในลายเซ็น Outlook ควรสร้างเทมเพลตลายเซ็นที่มีรูปใน Outlook แล้วในสคริปต์ PowerShell ให้คัดลอกแทนที่ไฟล์รูปในโฟลเดอร์เทมเพลต (รูปเก็บใน %AppData%\Microsoft\Signatures\<signature name>.files)
  • ใน Exchange 2007 ขึ้นไป สามารถทำลายเซ็นง่ายที่แทรกในทุกอีเมลด้วย Transport Rules