OUTLOOK NICKNAMES REBUILD – AT LAST!
1. Start, powershell…, right click Run As Administrator to start a PowerShell session.
2. Set-ExecutionPolicy RemoteSigned, now exit
3. Create a new text file with this content, save as nk2.ps1 and then right-click, Run with Powershell
4. The contacts will be in Suggested Contacts, so you will need to create a new email, BCC all the contacts and press Save (BUT DON’T SEND!)
# OUTLOOK AUTOCOMPLETE POWERIMPORT # # Author: N. Gjermundshaug - Degree Consulting Group AS - www.degree.no # # This script requires Outlook to be installed and configured. It scans through the SentItems folder. # For each sent email, it loops through each Recipient - and adds the recipient to the "Suggested Contacts" Address Group. # Contacts in the "Suggested Contacts" will be displayed in the autocomplete field - when composing new emails (like nk2). # Contacts are only added once from the script. $outlook = new-object -com outlook.application $olFolders = "Microsoft.Office.Interop.Outlook.OlDefaultFolders" -as [type] $namespace = $outlook.GetNameSpace("MAPI") $sentItems = $namespace.getDefaultFolder($olFolders::olFolderSentMail) $alreadyAddedEmails = @() #Empty Array $counter = 0; $totalItems = $sentItems.items.count; Write-Host "Scanning through" $totalItems "emails in SentItems" $contacts = $outlook.Session.GetDefaultFolder($olFolders::olFolderSuggestedContacts) ############################################################################################################## # FUNCTION - Adds Name/Email to SuggestedContacts - Unless it has already been added before (by this script). ############################################################################################################## Function AddToSuggestedContactsIfNotAlreadyAdded ($name, $email) { if(($name -eq "") -or ($email -eq "") -or ($name -eq $null) -or ($email -eq $null)){ return; } $name = $name.Replace("'", "").Replace("""", "") $contactAlreadyAdded = $false foreach ($elem in $global:alreadyAddedEmails) { if(($elem.ToLower() -eq $email.ToLower())){ $contactAlreadyAdded = $true Write-Host ($global:counter)"/"($totalItems) "SKIPPED " $name.PadRight(25," ") "-" $email return; } } if(!$contactAlreadyAdded ) { $newcontact = $contacts.Items.Add() $newcontact.FullName = $name $newcontact.Email1Address = $email $newcontact.Save() $global:alreadyAddedEmails += $email Write-Host ($global:counter)"/"($totalItems) "ADDED " $name.PadRight(25," ") "-" $email } } # Loop through all emails in SentItems $sentItems.Items | % { #Loop through each recipient $_.Recipients | %{ AddToSuggestedContactsIfNotAlreadyAdded $_.Name $_.Address } $global:counter = $global:counter + 1 } Write-Host "Done!" $outlook.Quit()