mikedopp icon

SetOUtLooksignaturePS

mikedopp | PRO | 08/19/16 07:39:30 PM UTC | 0 ⭐ | 396 👁️ | Never ⏰ | []
PowerShell |

8.55 KB

|

None

|

0 👍

/

0 👎

###############################################################
# This section is to support older versions of powershell     
# and also to not be forced to invoke a command on a different
# computer or to be forced to install aditional modules on 
# users computers      
###############################################################
Function Get-UserADObject
{
    [CmdletBinding(
            SupportsShouldProcess=$True,
            ConfirmImpact="Low"
    )]
    param
    (
        [String]$Ldap = "dc="+$env:USERDNSDOMAIN.replace(".",",dc="),        
        [String]$Filter = "(&(objectCategory=person)(objectClass=user))"
    )
 
    Begin{}
 
    Process
    {
        if ($pscmdlet.ShouldProcess($Ldap,"Get information about AD Object"))
        {
            $searcher=[adsisearcher]$Filter
             
            $Ldap = $Ldap.replace("LDAP://","")
            $searcher.SearchRoot="LDAP://$Ldap"
            $results=$searcher.FindAll()
     
            $ADObjects = @()
            foreach($result in $results)
            {
                [Array]$propertiesList = $result.Properties.PropertyNames
                $obj = New-Object PSObject
                foreach($property in $propertiesList)
                {  
                    $obj | add-member -membertype noteproperty -name $property -value ([string]$result.Properties.Item($property))
                }
                $ADObjects += $obj
            }
       
            Return $ADObjects
        }
    }
     
    End{}
}
$info = Get-UserADObject -Filter "samaccountname=$env:username"
 
# Set variables - gets the ad information from adsisearch so no need to load the activedirectory module
$HTMTemplate = (Get-Content "Path to HTM template")
$RTFTemplate = (Get-Content "Path to RTF Template")
$TXTTemplate = (Get-Content "Path to TXT Template")
 
$userDomain = $env:USERNAME + ".$env:USERDOMAIN"
$versions = @('11.0', '12.0', '13.0', '14.0', '15.0', '16.0')
$Name =  $info.displayname
$Email = $info.mail
$Title = $info.title
$Phone = $info.telephonenumber
$uname = $info.name
$notes = $info.info
# addes the Professional Designation
if($notes -ne $null){$name += ", $notes"}
if ($Cell -ne $null){$Phone += " - Mobile: $Cell"}
 
Function Set-OutlookSignature
{
    <########################################################
            #   Email Signature setup                               
            #   Get the logged in user name                        
            #   Get the AD account information from that username  
            #   Set the variables needed                             
    ########################################################>
 
 
    # Use a template HTM file and auto fill. Create folder and the files for the new signature.
    # You need all three different file types for the three different signature types
    $HTMTemplate |
    Foreach-Object { $_ -replace '"Name"', "$Name" `
        -replace '"Title"', "$Title" `
        -replace '"Email"', "$Email" `
    -replace '"EXT"', "$Phone"}|
    Set-Content "c:\EmailSig$env:username.htm"
 
    # for the RTF signature
    $RTFTemplate |
    Foreach-Object { $_ -replace '"Name"', "$Name" `
        -replace '"Title"', "$Title" `
        -replace '"Email"', "$Email" `
        -replace '"EXT"', "$Phone" `
    -replace '"Username"', "$uname"}|
    Set-Content "c:\EmailSig$env:username.rtf"
 
    # for the txt signature
    $TXTTemplate |
    Foreach-Object { $_ -replace '"Name"', "$Name" `
        -replace '"Title"', "$Title" `
        -replace '"Email"', "$Email" `
    -replace '"EXT"', "$Phone"}|
    Set-Content "c:\EmailSig$env:username.txt"
 
 
    # Test and set the reg keys for new and reply messages.
    # This also removes the option to change the signature.
 
    foreach ($version in $versions){if ( test-path "HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS" ) {
            get-item -path HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS | new-Itemproperty -name NewSignature -value $env:USERNAME -propertytype string -force
            get-item -path HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS | new-Itemproperty -name ReplySignature -value $env:USERNAME -propertytype string -force
        }
    }
 
    # For some office 2016 it installed to HKLM instead of HKCU, Added this path to cover those instances.
    
    foreach ($version in $versions){if ( test-path "HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS" ) {
            get-item -path HKLM:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS | new-Itemproperty -name NewSignature -value $env:USERNAME -propertytype string -force
            get-item -path HKLM:\SOFTWARE\MICROSOFT\OFFICE\$version\COMMON\MAILSETTINGS | new-Itemproperty -name ReplySignature -value $env:USERNAME -propertytype string -force
        }
    }
 
 
    #Create and set these reg keys
 
    foreach ($version in $versions){ if (test-path "HKCU:\Software\Microsoft\Office\\$version\Common\General") {
            get-item -path HKCU:\Software\Microsoft\Office\$version\Common\General | new-Itemproperty -name Signatures -value $env:username -propertytype string -force
            $key = Get-ItemProperty -Path HKCU:\Software\Microsoft\Office\$version\Common\General -name Royal-First-Run
            if ($key -eq $null){
                get-item -path HKCU:\Software\Microsoft\Office\$version\Common\\General | new-Itemproperty -name Royal-First-Run -value "1" -propertytype string -force
            get-item -path HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\OUTLOOK\SETUP | Remove-ItemProperty -name First-Run }
        }
    }
 
    # For some office 2016 it installed to HKLM instead of HKCU, Added this path to cover those instances.
    
    foreach ($version in $versions){ if (test-path "HKCU:\Software\Microsoft\Office\\$version\Common\General") {
            get-item -path HKCU:\Software\Microsoft\Office\$version\Common\General | new-Itemproperty -name Signatures -value $env:username -propertytype string -force
            $key = Get-ItemProperty -Path HKCU:\Software\Microsoft\Office\$version\Common\General -name Royal-First-Run
            if ($key -eq $null){
                get-item -path HKCU:\Software\Microsoft\Office\$version\Common\\General | new-Itemproperty -name Royal-First-Run -value "1" -propertytype string -force
            get-item -path HKCU:\SOFTWARE\MICROSOFT\OFFICE\$version\OUTLOOK\SETUP | Remove-ItemProperty -name First-Run }
        }
    }
 
    # Copy the signature files to the correct location for the install type
 
 
    Copy-item "C:\EmailSig$env:username.htm" C:\Users\$userDomain\AppData\Roaming\Microsoft\Signatures\$userDomain.htm
    Copy-Item "C:\EmailSig$env:username.rtf" C:\Users\$userDomain\AppData\Roaming\Microsoft\Signatures\$userDomain.rtf
    Copy-Item "C:\EmailSig$env:username.txt" C:\Users\$userDomain\AppData\Roaming\Microsoft\Signatures\$userDomain.txt
     
 
    if ((test-path -path "C:\Users\$env:username\AppData\Roaming\Microsoft\$env:username") -eq $false){
        New-Item -ItemType Directory -path "C:\Users\$env:username\AppData\Roaming\Microsoft\$env:username"
    }
       
   
    if ((test-path -path "C:\Users\$env:username\AppData\Roaming\Microsoft\Signatures\") -eq $false){
        New-Item -ItemType Directory -path "C:\Users\$env:username\AppData\Roaming\Microsoft\Signatures\"
    }
       
    Copy-item "C:\EmailSig$env:username.htm" C:\Users\$env:username\AppData\Roaming\Microsoft\$env:username\$env:username.htm
    Copy-Item "C:\EmailSig$env:username.rtf" C:\Users\$env:username\AppData\Roaming\Microsoft\$env:username\$env:username.rtf
    Copy-Item "C:\EmailSig$env:username.txt" C:\Users\$env:username\AppData\Roaming\Microsoft\$env:username\$env:username.txt
    ##
    Copy-item "C:\EmailSig$env:username.htm" C:\Users\$env:username\AppData\Roaming\Microsoft\Signatures\$env:username.htm
    Copy-Item "C:\EmailSig$env:username.rtf" C:\Users\$env:username\AppData\Roaming\Microsoft\Signatures\$env:username.rtf
    Copy-Item "C:\EmailSig$env:username.txt" C:\Users\$env:username\AppData\Roaming\Microsoft\Signatures\$env:username.txt
 
 
    #################################################
 
    #
    <#
            To enable the ability to change signature you will need to remove
            the following reg keys
            HKCU:\\SOFTWARE\\MICROSOFT\\OFFICE\\14.0\\COMMON\\MAILSETTINGS\\NEWSIGNATURE
            HKCU:\\SOFTWARE\\MICROSOFT\\OFFICE\\14.0\\COMMON\\MAILSETTINGS\\REPLYSIGNATURE
            THEY SHOULD BE SET TO "REG_SZ" "*USERNAME*"
    #>
}
 
Set-OutlookSignature

Comments