Secara otomatis menghasilkan tanda tangan di Outlook 2010/2013 menggunakan PowerShell

Dalam artikel ini, kami akan menunjukkan cara membuat tanda tangan pengguna secara otomatis di klien email Outlook 2010/2013 menggunakan PowerShell berdasarkan data dari Active Directory. Berkat teknik yang dijelaskan, dimungkinkan untuk memastikan bahwa ketika Anda pertama kali masuk ke sistem dan memulai Outlook, setiap pengguna domain baru yang menggunakan templat tunggal secara otomatis membuat tanda tangan dengan informasi kontaknya yang diperoleh dari Active Directory.

Secara alami, agar skrip tersebut berfungsi dengan benar, semua pengguna di AD perlu memiliki data saat ini. Dalam contoh ini, kami akan menggunakan atribut Active Directory berikut dalam tanda tangan pengguna:

  • Nama pengguna dalam bahasa Rusia (dalam kasus saya, data ini disimpan dalam atribut Deskripsi),
  • posisi (atribut Judul)
  • nama perusahaan (bidang Perusahaan)
  • Kode Pos, Kota, dan Alamat (Kode Pos, Kota, StreetAddress)
  • nomor telepon (OfficePhone)
  • alamat surat (Mail)
  • alamat situs web (Beranda)

Kita perlu membuat 3 file dengan templat tanda tangan untuk Outlook dalam format htm (HTML), rtf (Teks Kaya) dan txt (Teks Biasa). Desain, konten, dan tampilan templat tanda tangan dalam file-file ini harus memenuhi persyaratan tanda tangan surat perusahaan.

Buat file signature.htm dengan kode html berikut:







Salam


@NAMA

    


@DESKRIPSI


@ PERUSAHAAN




@POSTALCODE, @CITY, @STREETADDRESS


telp. @ KANTOR


@WEBSITE


Email: @EMAIL



Isi file tanda tangan.rtf dan tanda tangan.txt akan seperti ini:

Salam,
@NAMA
@DESKRIPSI
@ PERUSAHAAN
@POSTALCODE, @CITY, @STREETADDRESS
Telp @OFFICEPHONE
Email: @EMAIL
situs: @WEBSITE

Dalam katalog C: \Pengguna\Publik\Unduhan buat folder OutlookSignature, di mana akan disimpan templat tanda tangan untuk Outlook dan tanda tangan pengguna komputer. Di dalam direktori C: \ Users \ Public \ Downloads \ OutlookSignature, buat subdirektori Templat, di mana Anda perlu menyalin tiga file dengan templat tanda tangan (ini dapat dilakukan secara manual atau menggunakan Preferensi Kebijakan Grup (GPP)).

Buat file outlooksignature.ps1 baru dengan kode PowerShell berikut (sebelum setiap blok kode saya akan memberikan deskripsi singkat)

Tentukan satu set variabel. Variabel $ User berisi nama pengguna dari mana skrip dijalankan. Dalam variabel yang tersisa, kami menulis nama dan ekstensi file dan jalur untuk mereka.

$ 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"

Unduh modul PowerShell untuk bekerja dengan AD. Kemudian, menggunakan cmdlet Get-ADUser, kita mendapatkan nilai atribut pengguna yang menarik bagi kita di Active Directory dan menyimpannya dalam objek $ AD_user.

Catatan. Agar cmdlet Get-ADUser berjalan di Windows 7, RSAT harus diinstal pada PC dan komponen diaktifkan  Modul Direktori Aktif Untuk Windows PowerShell (Panel Kontrol -> Program dan Fitur -> Aktifkan / Nonaktifkan Fitur Windows -> Alat Administrasi Server Jarak Jauh -> Alat Administrasi Peran -> AD DS Dan Alat LDS AD)

Direktori pengaktifan modul impor
$ AD_user = Get-ADUser $ User-Judul Properti, Perusahaan, Deskripsi, Faks, HomePage, Mail, OfficePhone, PostalCode, Kota, StreetAddress

Buat direktori untuk menyimpan file tanda tangan pengguna dan salin file template ke dalamnya:

Item Baru -Path "$ PathSignature \ $ User" -ItemType Container -Force
foreach ($ Ext dalam $ FileExtension)

Copy-Item -Force "$ PathSignatureTemplates \ $ FileName. $ Ext" "$ PathSignatureUser \ $ FileName. $ Ext"

Kemudian, menggunakan fungsi ganti, kami mengganti data di templat dengan data pengguna dari AD:

foreach ($ Ext dalam $ FileExtension)

(Dapatkan-Konten "$ PathSignatureUser \ $ FileName. $ Ext") | Foreach-Object
$ _ '
-ganti "@NAME", $ AD_user. Deskripsi '
-ganti "@DESCRIPTION", $ AD_user.title '
-ganti "@COMPANY", $ AD_user.Company '
-ganti "@STREETADDRESS", $ AD_user.StreetAddress '
-ganti "@POSTALCODE", $ AD_user.PostalCode '
-ganti "@CITY", $ AD_user.City '
-ganti "@OFFICEPHONE", $ AD_user.OfficePhone '
-ganti "@EMAIL", $ AD_user.Mail '
-ganti "@WEBSITE", $ AD_user.Homepage '
| Set-Konten "$ PathSignatureUser \ $ FileName. $ Ext"

Masih menyalin file template tanda tangan ke direktori di mana Outlook 2010/2013/2016 menyimpan tanda tangan % APPDATA% \ Microsoft \ Signatures (C: \ Users \ username \ AppData \ Roaming \ Microsoft \ Signatures).

foreach ($ Ext dalam $ FileExtension)

Copy-Item -Force "$ PathSignatureUser \ $ FileName. $ Ext" "$ AppSignatures \ $ User. $ Ext"
tulis-host "$ PathSignatureUser \ $ FileName. $ Ext"
host-host "$ AppSignatures \ $ User. $ Ext"

Agar Outlook dapat menggunakan file yang dibuat dengan templat tanda tangan saat memulai, Anda perlu

  • Hapus opsi Jalankan pertama di cabang HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Outlook \ Setup
  • Di cabang HKEY_CURRENT_USER \ Software \ Microsoft \ Office \\ Common \ MailSettings, buat dua parameter string dengan nama Kiriman berita dan ReplySignature, yang akan berisi nama templat dengan tanda tangan (dalam contoh kami, nama templat cocok dengan nama akun dalam AD)

Karenanya, untuk bekerja dengan versi MS Office yang berbeda, Anda perlu menambahkan kode berikut:

#Office 2010
If (Jalur Uji HKCU: '\ Software \ Microsoft \ Office \ 14.0')
Remove-ItemProperty -Path HKCU: \ Software \ Microsoft \ Office \ 14.0 \ Outlook \ Setup -Nama First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings' -Name 'ReplySignature' -Nilai $ Pengguna -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 14.0 \ Common \ MailSettings' -Nama 'NewSignature' -Nilai $ Pengguna -PropertyType 'String' -Force

#Office 2013
If (Jalur Uji HKCU: '\ Software \ Microsoft \ Office \ 15.0')
Remove-ItemProperty -Path HKCU: \ Software \ Microsoft \ Office \ 15.0 \ Outlook \ Setup -Nama First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings' -Name 'ReplySignature' -Nilai $ Pengguna -PropertyType 'String' -Force
New-ItemProperty HKCU: '\ Software \ Microsoft \ Office \ 15.0 \ Common \ MailSettings' -Nama 'NewSignature' -Nilai $ Pengguna -PropertyType 'String' -Force

Tetap menetapkan skrip PowerShell ini untuk dijalankan sekali menggunakan Preferensi Kebijakan Grup saat pengguna masuk. Akibatnya, ketika memulai Outlook, secara otomatis akan menggunakan tanda tangan elektronik yang dihasilkan untuk surat yang dikirim (gambar pertama artikel memberikan contoh tanda tangan yang dihasilkan secara otomatis).

Beberapa tips.

  • Jika Outlook menampilkan tanda tangan htm dengan lekukan besar (dua kali lipat) di antara baris, ini adalah bug Outlook. Cara terbaik adalah membuat file dengan templat tanda tangan htm langsung di Outlook, dan menggunakan file ini sebagai templat (disimpan dalam% APPDATA% \ Microsoft \ Tanda tangan)
  • Anda juga dapat menambahkan foto pengguna dari atribut thumbnailFoto di Direktori Aktif ke tanda tangan. Karena Tidak ada cara mudah untuk menambahkan gambar ke tanda tangan Outlook, cara termudah adalah membuat template tanda tangan dengan gambar sewenang-wenang di Outlook, seperti pada paragraf di atas, dan mengganti file dengan gambar di direktori template dengan salinan di skrip PowerShell (gambar disimpan di direktori % AppData% \ Microsoft \ Signatures \ .files).
  • Di Exchange 2007 dan yang lebih baru, tanda tangan teks paling sederhana yang secara otomatis dimasukkan dalam semua huruf juga dapat diimplementasikan menggunakan aturan transport