En este artículo, mostraremos cómo crear automáticamente una firma de usuario en Outlook 2010/2013 en función de los datos de Active Directory. Se considerará el siguiente escenario: la primera vez que un nuevo usuario de dominio inicia sesión en la estación de trabajo, el script de PowerShell genera automáticamente un archivo de firma de usuario de Outlook con su información de contacto recuperada de Active Directory.
Para que este script funcione correctamente, es necesario que todos los usuarios de AD tengan todos los atributos requeridos. En este ejemplo, usaremos los siguientes atributos de Active Directory en la firma del usuario:
- Nombre de usuario completo (en mi caso, estos datos se almacenan en el atributo Descripción)
- Título del Puesto)
- Nombre de la empresa (empresa)
- Código postal, ciudad y dirección (PostalCode, City, StreetAddress)
- Número de teléfono (OfficePhone)
- Correo electrónico (correo)
- Sitio web (página de inicio)
Necesita crear 3 archivos con plantillas de firma para Outlook en htm (HTML), rtf (Texto enriquecido) y TXT (Texto sin formato) formatos. El diseño, contenido y apariencia de las plantillas de firmas en estos archivos deben cumplir con los requisitos de la política corporativa de firmas de correo electrónico.
Crea el archivo signature.htm que contiene el siguiente código 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> </p>
<p>@DESCRIPTION</p>
<p>@COMPANY</p></b>
<p> </p></span>
<span style="font-size:8.0pt;">
<p> @POSTALCODE, @CITY, @STREETADDRESS</p>
<p> Phone.@OFFICEPHONE</p>
<p> <a href="http://@WEBSITE">@WEBSITE</a></p>
<p>e-mail:<a href="http://woshub.com/generating-outlook-20102013-signature-using-ad-information/mailto:@EMAIL">@EMAIL</a></span>
</div>
</body>
</html>
Los contenidos de signature.rtf y signature.txt los archivos deben ser los siguientes:
Best Regards,
@NAME
@DESCRIPTION
@COMPANY
@POSTALCODE, @CITY, @STREETADDRESS
Phone. @OFFICEPHONE
e-mail:@EMAIL
site:@WEBSITE
Crea la carpeta OutlookFirma en C: Usuarios Público Descargas para almacenar plantillas de firmas para Outlook y firmas de los usuarios de computadoras. En C: Users Public Downloads OutlookSignature cree una subcarpeta Plantillas y copie tres archivos que contengan plantillas de firmas. Puede hacerlo manualmente o utilizando las Preferencias de directiva de grupo (GPP).

Crea un archivo nuevo outlooksignature.ps1 con el siguiente código de PowerShell (daré una breve descripción de cada bloque de código)
Determina el conjunto de variables. La variable $ User contiene el nombre del usuario, desde cuya cuenta se ejecuta el script. Especifique los nombres y extensiones de los archivos, así como las rutas a ellos en otras variables.
$User = $env:UserName
$FileName = "signature"
$FileExtension = "htm","rtf","txt"
$Path = "C:UsersPublicDownloads"
$PathSignature = "$PathOutlookSignature"
$PathSignatureTemplates = "$PathOutlookSignatureTemplates"
$PathSignatureUser = "$PathSignature$User"
$AppSignatures =$env:APPDATA + "MicrosoftSignatures"
Importe el módulo de PowerShell para acceder a AD. Con el cmdlet Get-ADUser, obtenga los valores de los atributos de usuario en Active Directory que necesita y guárdelos en el objeto $ AD_user.
Nota. Para que el cmdlet Get-ADUser funcione en Windows 7, RSAT debe estar instalado en su computadora. El componente Módulo de Active Directory para Windows PowerShell también debe estar habilitado (Panel de control -> Programas y características -> Activar / desactivar características de Windows -> Herramientas de administración de servidor remoto -> Herramientas de administración de roles -> Herramientas de AD DS y AD LDS.
Import-module activedirectory
$AD_user = Get-ADUser $User -Properties Title,Company,Description,Fax,HomePage,Mail,OfficePhone,PostalCode,City,StreetAddress
Cree una carpeta para almacenar archivos de firma de usuario y copie las plantillas en ella:
New-Item -Path "$PathSignature$User" -ItemType Container –Force
foreach ($Ext in $FileExtension)
{
Copy-Item -Force "$PathSignatureTemplates$FileName.$Ext" "$PathSignatureUser$FileName.$Ext"
}
Luego usando reemplazar función, reemplace los datos en las plantillas con datos de usuario de 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"
}
Ahora solo tiene que copiar archivos que contienen plantillas de firmas a la carpeta, en la que Outlook 2010/2013/2016 almacena firmas – % 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"
}
Para que Outlook use estos archivos con plantillas de firma cuando se inicia, haga lo siguiente:
- Borrar Primer intento valor de HKEY_CURRENT_USER Software Microsoft Office
Outlook Setup - En HKEY_CURRENT_USER Software Microsoft Office
Common MailSettings, cree dos valores de cadena con los nombres Nueva firma y ResponderFirma, que contendrá el nombre de la plantilla y la firma (en nuestro caso, el nombre de la plantilla es idéntico al nombre de la cuenta de AD)
Para trabajar en diferentes versiones de MS Office, debe agregar este código:
#Office 2010
If (Test-Path HKCU:'SoftwareMicrosoftOffice14.0') {
Remove-ItemProperty -Path HKCU:SoftwareMicrosoftOffice14.0OutlookSetup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'SoftwareMicrosoftOffice14.0CommonMailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'SoftwareMicrosoftOffice14.0CommonMailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}
#Office 2013
If (Test-Path HKCU:'SoftwareMicrosoftOffice15.0') {
Remove-ItemProperty -Path HKCU:SoftwareMicrosoftOffice15.0OutlookSetup -Name First-Run -Force -ErrorAction SilentlyContinue -Verbose
New-ItemProperty HKCU:'SoftwareMicrosoftOffice15.0CommonMailSettings' -Name 'ReplySignature' -Value $User -PropertyType 'String' -Force
New-ItemProperty HKCU:'SoftwareMicrosoftOffice15.0CommonMailSettings' -Name 'NewSignature' -Value $User -PropertyType 'String' -Force
}

Simplemente haga que este script de PowerShell se ejecute una vez utilizando las Preferencias de política de grupo cuando un usuario inicie sesión en el sistema. Como resultado, Outlook utilizará la firma que creamos para los correos electrónicos salientes. La primera imagen del artículo muestra una muestra de esta firma.
Algunos consejos
- Si Outlook muestra la firma HTM con espacios grandes (dobles) entre líneas, es el error de Outlook. Es mejor crear una firma HTM directamente en Outlook y usarla como plantilla (almacenada en% APPDATA% Microsoft Signatures)
- También puede agregar una foto de usuario del atributo thumbnailPhoto de Active Directory a la firma. Dado que no existe una forma sencilla de agregar una imagen a la firma de Outlook, como en el elemento anterior, es mejor crear una plantilla de firma que contenga cualquier imagen en Outlook y, al copiar, reemplazar el archivo de imagen en la carpeta de la plantilla en el script de PowerShell (la imagen se almacena en % AppData% Microsoft Signatures
.files ). - En Exchange 2007 y versiones posteriores, puede insertar la firma más simple en todos los correos electrónicos utilizando Reglas de transporte.





