Log on with a test user on Windows with Classic Outlook and Word. Running this on your primary account will overwrite signatures named "Formal" or "Informal" unless you use Simulation Mode, which is described in step 3.
Simulation Mode also allows you to run this Quickstart guide on Linux and macOS, or when you do not have Classic Outlook for Windows at hand.
Trust software signed with ExplicIT Consulting's certificate - all included PS1 and DLL files are signed with this certificate.
If needed, allow execution and library loading from the TEMP folder.
☁️
Create Entra ID app for Exchange Online
Follow the instructions in .\config\default graph config.ps1 for manual setup or have a "Global Administrator" or "Application Administrator" run the provided PowerShell command.
For national or sovereign clouds, add the CloudEnvironment parameter.
Check the required permissions in advance: You can find all the information you need about usage in the files themselves as well as in the chapter Security considerations.
powershell.exe-NoExit -File "c:\test\Set-OutlookSignatures.ps1"-GraphOnly true-GraphClientId "<Entra ID app client ID>"
In pure on-premises environments, remove the GraphOnly and GraphClientId parameters. For national or sovereign clouds, add the CloudEnvironment parameter.
💡
Pro-Tip: Start Risk-Free with Simulation Mode
If you lack Classic Outlook for Windows or want a zero-impact trial of the software, use Simulation Mode: This mode creates the exact signatures for the simulated user as files on your disk, without modifying Outlook — the perfect way to verify your configuration without changing any system settings.
Just add the parameters -SimulateUser a@example.com -SimulateMailboxes a@example.com and see the results in your Documents\Outlook Signatures folder.
Start Set-OutlookSignatures
Log file: 'C:\Users\bobbybusy\AppData\Local\Set-OutlookSignatures\Logs\Set-OutlookSignatures_Log.txt'
Ignore log lines starting with 'PS>TerminatingError' or '>> TerminatingError' unless instructed otherwise.
Script notes
Software: Set-OutlookSignatures
Version : v4.31.0
Web : https://set-outlooksignatures.com
License : See '.\LICENSE.txt' for details and copyright
Check parameters and script environment
PowerShell: '5.1.26100.8655', 'Desktop', 'Microsoft Windows NT 10.0.26200.0'
PowerShell bitness: 64-bit process on a 64-bit operating system
Script path: 'C:\Demo\Set-OutlookSignatures\Set-OutlookSignatures.ps1'
Invocation line: '& $ScriptToUse @params'
Bound parameters: '{"OOFTemplatePath":"..\\Templates\\Out-of-Office DOCX","ReplacementVariableConfigFile":"..\\Config\\custom replacement variables.ps1","UseHtmTemplates":false,"BenefactorCircleID":"e8911c17-de30-0000-0000-000000000001","SignatureIniFile":"..\\Templates\\Signatures DOCX\\_Signatures.ini","SignatureTemplatePath":"..\\Templates\\Signatures DOCX","OOFIniFile":"..\\Templates\\Out-of-Office DOCX\\_OOF.ini","GraphClientID":"2bee9349-d720-420a-853f-a93c8bbc2179","BenefactorCircleLicenseFile":"..\\License\\license.dll","WordProcessPriority":"High","ScriptProcessPriority":"High","MirrorCloudSignatures":"CurrentUserOnly","GraphOnly":true}'
Unbound arguments: ''
Set-OutlookSignatures.ps1 hash: BF6D8E18A695AA43633621C10AF77E6273EA41B074E3405FA76F2120BD63D28B
SetOutlookSignatures.Common.dll hash: 2FA8133B61D6A7A61FB371BD083AFF7A3901E39C72E936F4CA27518AFF635661
TrustsToCheckForGroups: '*'
IncludeMailboxForestDomainLocalGroups: 'False'
CloudEnvironment: 'Public'
GraphClientID: '2bee9349-d720-420a-853f-a93c8bbc2179'
GraphConfigFile: '.\config\default graph config.ps1'
SignatureTemplatePath: '..\Templates\Signatures DOCX'
SignatureIniFile: '..\Templates\Signatures DOCX\_Signatures.ini'
SetCurrentUserOutlookWebSignature: 'True'
SetCurrentUserOOFMessage: 'True'
OOFTemplatePath: '..\Templates\Out-of-Office DOCX'
OOFIniFile: '..\Templates\Out-of-Office DOCX\_OOF.ini'
UseHtmTemplates: 'False'
GraphOnly: 'True'
SimulateAndDeploy: 'False'
SimulateAndDeployGraphCredentialFile: ''
ReplacementVariableConfigFile: '..\Config\custom replacement variables.ps1'
VirtualMailboxConfigFile: ''
MoveCSSInline: 'True'
EmbedImagesInHtml: 'False'
EmbedImagesInHtmlAdditionalSignaturePath: 'True'
CreateRtfSignatures: 'False'
CreateTxtSignatures: 'True'
DocxHighResImageConversion: 'True'
DeleteUserCreatedSignatures: 'False'
DeleteScriptCreatedSignaturesWithoutTemplate: 'True'
SignaturesForAutomappedAndAdditionalMailboxes: 'True'
AdditionalSignaturePath: 'C:\Users\bobbybusy\Documents\Outlook Signatures'
SimulateUser: ''
SimulateMailboxes: ''
SimulateTime: ''
DisableRoamingSignatures: 'True'
MirrorCloudSignatures: 'CurrentUserOnly'
SignatureCollectionInDrafts: 'True'
MailboxSpecificSignatureNames: 'False'
WordProcessPriority: 'High' ('128')
ScriptProcessPriority: 'High' ('128')
BenefactorCircleLicenseFile: '..\License\license.dll'
BenefactorCircleID: 'e8911c17-de30-0000-0000-000000000001'
Benefactor Circle license information
Licensed to Benefactor Circle member
Set-OutlookSignatures demo tenant by ExplicIT Consulting GmbH
License version
License version and script version match: v4.31.0
License validity check
License is valid
Loading and initializing dependencies
QRCoder
libphonenumber-csharp
AddressFormatter
Get basic Outlook and Word information
Outlook
Set 'Send Pictures With Document' registry value to '1'
Set 'DisableRoamingSignatures' registry value to '1'
Registry version: 16.0
File version: 16.0.20131.20154
Bitness: x64
Default profile: Outlook
Is C2R Beta: False
DisableRoamingSignatures: 1
UseNewOutlook: False
New Outlook
Version: 1.2026.707.300
Status: Ok
UseNewOutlook: False
Word
Set 'DontUseScreenDpiOnOpen' registry value to '1'
Registry version: 16.0
File version: 16.0.20131.20154
Bitness: x64
Get Outlook signature file path(s)
'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Enumerate domains
Parameter GraphOnly set to 'True', ignore user's Active Directory in favor of Graph/Entra ID.
Get properties of currently logged-in user and assigned manager
Currently logged-in user
Enforcing Graph because at least one condition is true:
GraphOnly is true: True
GraphOnly is false, mailbox is in cloud, SetCurrentUserOOFMessage and/or SetCurrentUserOutlookWebSignature is true: False
GraphOnly is false and on-prem AD properties of current user are empty: False
New Outlook is used: False
The only Benefactor Circle license group is in Entra ID: True
Graph authentication
Application (client) ID of the Entra ID app: 2bee9349-d720-420a-853f-a93c8bbc2179
Load MSAL.PS
Authentication against Graph
Silent via Integrated Windows Authentication without login hint
PS>TerminatingError(): "Failed to get user name. "
Failed: Failed to get user name.
Silent via Integrated Windows Authentication with login hint
Login hint: ''
Failed: No login hint found before
Silent via Authentication Broker without login hint
Success: 'bobby.busy@galactic.test'
Authentication against Exchange Online
Silent via Integrated Windows Authentication without login hint
Failed: Ignoring because login hint is available.
Silent via Integrated Windows Authentication with login hint
Login hint: 'bobby.busy@galactic.test'
PS>TerminatingError(): "Integrated Windows Auth is not supported for managed users. See https://aka.ms/msal-net-iwa for details. "
Failed: Integrated Windows Auth is not supported for managed users. See https://aka.ms/msal-net-iwa for details.
Silent via Authentication Broker without login hint
Failed: Ignoring because login hint is available.
Silent via Authentication Broker with login hint
Login hint: 'bobby.busy@galactic.test'
Success: 'bobby.busy@galactic.test'
The permissions of the Entra ID app are not configured ideally.
Details: https://set-outlooksignatures.com/details#security-considerations
Info: App does not use the preferred delegated permission Files.SelectedOperations.Selected from the optional set 'Files.SelectedOperations.Selected OR Files.Read.All'.
Files.SelectedOperations.Selected is harder to implement but more secure.
Graph token cache: Encrypted file 'C:\Users\bobbybusy\AppData\Local\Set-OutlookSignatures\MSAL.PS\MSAL.PS.msalcache.bin3'
DistinguishedName:
UserPrincipalName: bobby.busy@galactic.test
Mail: bobby.busy@galactic.test
Manager of currently logged-in user
DistinguishedName:
UserPrincipalName: alex.alien@galactic.test
Mail: alex.alien@galactic.test
Get email addresses
Get email addresses from Outlook
Profile 'Outlook'
bobby.busy@galactic.test
alex.alien@galactic.test
executiveboard.office@galactic.test (automapped or additional mailbox)
Get properties of each mailbox and its manager
bobby.busy@galactic.test
Search for mailbox user object in Graph
DistinguishedName:
UserPrincipalName: bobby.busy@galactic.test
Mail: bobby.busy@galactic.test
Manager: alex.alien@galactic.test
DistinguishedName:
UserPrincipalName: alex.alien@galactic.test
Mail: alex.alien@galactic.test
Get group membership of mailbox
alex.alien@galactic.test
Search for mailbox user object in Graph
DistinguishedName:
UserPrincipalName: alex.alien@galactic.test
Mail: alex.alien@galactic.test
Manager:
Get group membership of mailbox
executiveboard.office@galactic.test
Search for mailbox user object in Graph
PS>TerminatingError(Invoke-RestMethod): "The remote server returned an error: (404) Not Found."
DistinguishedName:
UserPrincipalName: executiveboard.office@galactic.test
Mail: execboard.office@galactic.test
Manager:
Get group membership of mailbox
Parameter 'VirtualMailboxConfigFile' is not enabled, skipping task.
Sort mailbox list: User's primary mailbox, mailboxes in default Outlook profile, others
Mail attribute of currently logged-in or simulated user: 'bobby.busy@galactic.test'
Matching mailbox found
Mailbox priority (highest to lowest)
bobby.busy@galactic.test
alex.alien@galactic.test
execboard.office@galactic.test
Get all signature template files and categorize them
Compare signature INI entries and file system
Sort template files according to configuration
'Informal.docx' (signature INI index #1)
Common template (no group, email address or replacement variable allow tags specified)
Default signature for replies and forwards
defaultReplyFwd
'Formal.docx' (signature INI index #2)
Common template (no group, email address or replacement variable allow tags specified)
Default signature for new emails
defaultNew
'Test all default replacement variables.docx' (signature INI index #3)
Common template (no group, email address or replacement variable allow tags specified)
'Informal Delegate.docx' (signature INI index #4)
Outlook signature name: 'Informal Delegate alex.alien'
Mailbox specific template
alex.alien@galactic.test
Mailbox specific exclusions
-CURRENTUSER:alex.alien@galactic.test
Default signature for replies and forwards
defaultReplyFwd
'Informal Shared.docx' (signature INI index #5)
Outlook signature name: 'Informal executiveboard.office'
Mailbox specific template
executiveboard.office@galactic.test
Mailbox specific exclusions
-CurrentUser:executiveboard.office@galactic.test
Default signature for replies and forwards
defaultReplyFwd
'Formal Shared.docx' (signature INI index #6)
Outlook signature name: 'Formal executiveboard.office'
Mailbox specific template
executiveboard.office@galactic.test
Mailbox specific exclusions
-CurrentUser:executiveboard.office@galactic.test
Default signature for new emails
defaultNew
'Formal Delegate.docx' (signature INI index #7)
Outlook signature name: 'Formal Delegate alex.alien'
Mailbox specific template
alex.alien@galactic.test
Mailbox specific exclusions
-CURRENTUSER:alex.alien@galactic.test
Default signature for new emails
defaultNew
Get all OOF template files and categorize them
Compare OOF INI entries and file system
Sort template files according to configuration
'Internal.docx' (OOF INI index #1)
Common template (no group, email address or replacement variable allow tags specified)
Default internal OOF message
Internal
'External.docx' (OOF INI index #2)
Common template (no group, email address or replacement variable allow tags specified)
Default external OOF message
External
Start Word background process
Mailbox bobby.busy@galactic.test
Mailbox is member of license group: True
Extract SMTP addresses
Calculate replacement variables
'C:\Demo\Config\custom replacement variables.ps1'
Export available images
Download roaming signatures from Exchange Online
Download possible, Upload/set defaults possible, enable verbose output for details
'Formal' -> 'Formal'
'Formal Delegate alex.alien' -> 'Formal Delegate alex.alien'
'Formal executiveboard.office' -> 'Formal executiveboard.office'
'Informal' -> 'Informal'
'Informal Delegate alex.alien' -> 'Informal Delegate alex.alien'
'Informal executiveboard.office' -> 'Informal executiveboard.office'
'Test all default replacement variables' -> 'Test all default replacement variables'
Process common templates
'Informal.docx' (Signature INI index #1)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Informal'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
May take longer if images are not already embedded
'8e7e184f-ae90-46b1-bab0-ed7220b9a4ef' -> 'Informal'
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
Set signature as default for reply/forward messages (Outlook profile 'Outlook')
'Formal.docx' (Signature INI index #2)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Formal'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
May take longer if images are not already embedded
'90f3a1da-e179-45b8-bb18-5b440c104c19' -> 'Formal'
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
Set signature as default for new messages (Outlook profile 'Outlook')
'Test all default replacement variables.docx' (Signature INI index #3)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Test all default replacement variables'
Create temporary file copy
Replace non-picture variables
Template contains much text, replacement may be slow
Replace picture variables
Warning: Template contains images or shapes configured as non-inline.
Set the text wrapping to 'inline with text' to avoid email incompatibilities, such as incorrect positioning.
Template contains many pictures, replacement may be slow
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
May take longer if images are not already embedded
'f2ae5363-1460-4998-bceb-628bc5907f7a' -> 'Test all default replacement variables'
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
Process group specific templates
Process mailbox specific templates
'Informal Delegate.docx' (Signature INI index #4)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Informal Shared.docx' (Signature INI index #5)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Formal Shared.docx' (Signature INI index #6)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Formal Delegate.docx' (Signature INI index #7)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
Process replacementvariable specific templates
Set default signature(s) in Outlook for the web
Set default classic (not roaming) Outlook for the web signature
Default signature for new emails: 'Formal'
Default signature for replies and forwards: 'Informal'
Using 'Formal' for classic Outlook for the web (only one signature possible).
PS>TerminatingError(Invoke-RestMethod): "The remote server returned an error: (400) Bad Request."
PS>TerminatingError(Invoke-RestMethod): "The remote server returned an error: (400) Bad Request."
Set default roaming Outlook for the web signature(s)
Default signature for new emails: 'Formal'
Default signature for replies and forwarded emails: 'Informal'
Process out-of-office (OOF) auto replies
Process common templates
'Internal.docx' (OOF INI index #1)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
'External.docx' (OOF INI index #2)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Process group specific templates
Process mailbox specific templates
Process replacementvariable specific templates
Convert final OOF templates to HTM format
Internal OOF message: 'Internal.docx'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Remove temporary files
External OOF message: 'External.docx'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Remove temporary files
Set out-of-office (OOF) auto replies
Mailbox alex.alien@galactic.test
Mailbox is member of license group: True
Extract SMTP addresses
Calculate replacement variables
'C:\Demo\Config\custom replacement variables.ps1'
Export available images
Download roaming signatures from Exchange Online
Download not possible, Upload/set defaults possible, enable verbose output for details
Process common templates
'Informal.docx' (Signature INI index #1)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Informal'
Signature INI index #1 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
Set signature as default for reply/forward messages (Outlook profile 'Outlook')
'Formal.docx' (Signature INI index #2)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Formal'
Signature INI index #2 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
Set signature as default for new messages (Outlook profile 'Outlook')
'Test all default replacement variables.docx' (Signature INI index #3)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Test all default replacement variables'
Signature INI index #3 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
Process group specific templates
Process mailbox specific templates
'Informal Delegate.docx' (Signature INI index #4)
Check permissions
Allows
First email address match: alex.alien@galactic.test (current mailbox)
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Informal Delegate alex.alien'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
Requirements are not met, see prior mailbox specific messages for details.
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
Set signature as default for reply/forward messages (Outlook profile 'Outlook')
'Informal Shared.docx' (Signature INI index #5)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Formal Shared.docx' (Signature INI index #6)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Formal Delegate.docx' (Signature INI index #7)
Check permissions
Allows
First email address match: alex.alien@galactic.test (current mailbox)
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Formal Delegate alex.alien'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
Requirements are not met, see prior mailbox specific messages for details.
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
Set signature as default for new messages (Outlook profile 'Outlook')
Process replacementvariable specific templates
Mailbox execboard.office@galactic.test
Mailbox is member of license group: True
Extract SMTP addresses
Calculate replacement variables
'C:\Demo\Config\custom replacement variables.ps1'
Export available images
Download roaming signatures from Exchange Online
Download not possible, Upload/set defaults possible, enable verbose output for details
Process common templates
'Informal.docx' (Signature INI index #1)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Informal'
Signature INI index #1 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
'Formal.docx' (Signature INI index #2)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Formal'
Signature INI index #2 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
'Test all default replacement variables.docx' (Signature INI index #3)
Check permissions
Allows
Common: Template is classified as common template valid for all mailboxes
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Test all default replacement variables'
Signature INI index #3 already processed before with higher priority mailbox
Not overwriting signature. Consider using parameter MailboxSpecificSignatureNames.
Process group specific templates
Process mailbox specific templates
'Informal Delegate.docx' (Signature INI index #4)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
'Informal Shared.docx' (Signature INI index #5)
Check permissions
Allows
First email address match: executiveboard.office@galactic.test (current mailbox)
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Informal executiveboard.office'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
Requirements are not met, see prior mailbox specific messages for details.
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
'Formal Shared.docx' (Signature INI index #6)
Check permissions
Allows
First email address match: executiveboard.office@galactic.test (current mailbox)
Denies
No group match for current mailbox, checking current user specific denies
Group: Mailbox and current user are not member of any denied group
No email address match for current mailbox, checking current user specific denies
Email address: Mailbox and current user do not have any denied email address
Replacement variable: No deny replacement variable evaluates to true
Use template as there is at least one allow and no deny
Outlook signature name: 'Formal executiveboard.office'
Create temporary file copy
Replace non-picture variables
Replace picture variables
Export to HTM format
Export high-res images
Copy HTM image width and height attributes to style attribute
Move CSS inline
Remove empty CSS properties from style attributes
Add marker to final HTM file
Modify connected folder name
Export to TXT format
Upload signature to Exchange Online as roaming signature
Requirements are not met, see prior mailbox specific messages for details.
Copy signature files to 'C:\Users\bobbybusy\AppData\Roaming\Microsoft\Signatures'
Remove temporary files
'Formal Delegate.docx' (Signature INI index #7)
Check permissions
Allows
No email address match for current mailbox, checking current user specific allows
Email address: Mailbox and current user do not have any allowed email address
Do not use template as there is no allow or at least one deny
Process replacementvariable specific templates
Remove old signatures created by this script, which are no longer centrally available
Remove user-created signatures
Parameter 'DeleteUserCreatedSignatures' is not enabled, skipping task.
Upload local signatures to Exchange Online as roaming signatures for current user
Delete all signatures in the cloud
Upload local signatures to the cloud
May take longer if images are not already embedded
'Formal' -> 'Formal'
'Formal Delegate alex.alien' -> 'Formal Delegate alex.alien'
'Formal executiveboard.office' -> 'Formal executiveboard.office'
'Informal' -> 'Informal'
'Informal Delegate alex.alien' -> 'Informal Delegate alex.alien'
'Informal executiveboard.office' -> 'Informal executiveboard.office'
'Test all default replacement variables' -> 'Test all default replacement variables'
Prepare data for Outlook add-in
Required because Microsoft actively blocks Outlook add-ins from using roaming signatures
Common preparations
Benefactor Circle specific preparations
Implement Benefactor Circle specific preparations
Create 'My signatures, powered by Set-OutlookSignatures Benefactor Circle' email draft for current user
Copy signatures to AdditionalSignaturePath
'C:\Users\bobbybusy\Documents\Outlook Signatures'
Embedding images
Clean-up
Log file
'C:\Users\bobbybusy\AppData\Local\Set-OutlookSignatures\Logs\Set-OutlookSignatures_Log.txt'
Exit code
Code: 0
Description: Success.
End Set-OutlookSignatures
You now find three new signatures in Classic Outlook for Windows (or the Simulation Mode output folder), based on the included sample templates, the sample configuration, and the attributes of your own test user:
"Formal" is ideal for new emails to external recipients.
"Informal" is great for replies and forwards and for internal emails.
"Test all default replacement variables" gives you an overview of the integrated placeholders and a glimpse of what is possible for images and banners, phone number and address formatting. It is a showcase template containing all default replacement variables and several user account pictures, so converting it to a signature takes longer than for the other sample templates.
The included sample configuration contains more signature examples, but the first run usually creates only these three. Other sample signatures are bound to specific groups, mailboxes, email addresses, or delegation scenarios and are only created when the current user and mailbox context match those rules.
🎉
Quickstart complete!
You have now generated your first signatures and your environment is ready for customization.
The following sections show what the included sample templates create and how to use your own templates for your organization.
The following examples are actual HTML signature files generated from the included sample templates and our demo environment.
When you use the same templates in your own environment, the signature content is based on your test mailboxes: names, job titles, account pictures, email addresses, phone numbers, postal addresses, and delegation information.
Let's assume Mr. Bobby Busy works as a secretary in the Office of the Executive Board of Galactic Experiences. He has his own personal mailbox, sends mail on behalf of the CEO, Ms. Alex Alien, and can send as the Exec Board Office shared mailbox.
Company rules define that signatures must not only contain information about the mailbox sent from, but also about the real sender. With the default sample templates and configuration, this can yield the following variants automatically:
Why did the Quickstart create only three signatures?
The included sample configuration contains more examples than a typical first run creates. Some sample signatures are bound to specific groups, mailboxes, email addresses, or delegation scenarios. They are only created when the current user and mailbox context match those rules. Explore it in the INI editor for simple explanations of each setting.
Formal: Full signature for the personal mailbox of Bobby Busy - or yours
Informal: Short signature for personal mailbox (internal communication, external thread follow-ups)
Test all default replacement variables: Shows all placeholders but also account pictures, conditional banners, QR codes and more
Formal Delegate alex.alien: Full signature for when Bobby sends on behalf of the CEO, Ms. Alex Alien
Formal executiveboard.office: Full signature for when Bobby sends as the Executive Board Office shared mailbox
Informal Delegate alex.alien: Short signature for when Bobby sends on behalf of the CEO, Ms. Alex Alien (internal communication, external thread follow-ups)
Informal executiveboard.office: Short signature for when Bobby sends as the Executive Board Office shared mailbox (internal communication, external thread follow-ups)
Now that you have seen what the included samples can generate, it is time to use your own templates.
Copy .\sample templates to a new folder and start editing. We recommend following our folder structure recommendation to make future updates easier.
Control who gets which signature by defining template assignments in the INI file. Assign templates to mailboxes, groups, email addresses, or attributes, generate multiple variants from one template, and define defaults for new emails, replies, and forwards.
The sample file .\sample templates\Signatures DOCX\_Signatures.ini demonstrates standard and advanced assignment scenarios, including denied assignments, template reuse, Send-As/Send-on-Behalf/Boss-Secretary delegates, and time-based rules. Explore the sample configuration in the INI editor for simple explanations of each setting.
Many companies are fully covered by the free and open-source Set-OutlookSignatures. If your organization needs additional automation, broader client support, and centralized management capabilities, the Benefactor Circle add-on enhances Set-OutlookSignatures with great additional possibilities.
It enables scenarios such as cross-platform Outlook support, centralized deployment without software on each device, time-controlled campaigns, shared mailbox and delegation handling, out-of-office replies, signature cleanup and third-party client support.