PoshCode Archive  Hex Artifact Content

Artifact 258993c9b06b2d9c6fd90e23e5b9f04b99d8330b31864622167ead3bbe4d93d7:

  • File Set-Outlook-Signatures.ps1 — part of check-in [e84ef3f8f8] at 2018-06-10 14:11:59 on branch trunk — This is a script I wrote to automatically update email signatures. Reference this script in group policy. (user: darkscrypt size: 18528)

0000: 23 20 65 6e 63 6f 64 69 6e 67 3a 20 61 73 63 69  # encoding: asci
0010: 69 0d 0a 23 20 61 70 69 3a 20 70 6f 77 65 72 73  i..# api: powers
0020: 68 65 6c 6c 0d 0a 23 20 74 69 74 6c 65 3a 20 53  hell..# title: S
0030: 65 74 20 4f 75 74 6c 6f 6f 6b 20 53 69 67 6e 61  et Outlook Signa
0040: 74 75 72 65 73 0d 0a 23 20 64 65 73 63 72 69 70  tures..# descrip
0050: 74 69 6f 6e 3a 20 54 68 69 73 20 69 73 20 61 20  tion: This is a 
0060: 73 63 72 69 70 74 20 49 20 77 72 6f 74 65 20 74  script I wrote t
0070: 6f 20 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20  o automatically 
0080: 75 70 64 61 74 65 20 65 6d 61 69 6c 20 73 69 67  update email sig
0090: 6e 61 74 75 72 65 73 2e 20 52 65 66 65 72 65 6e  natures. Referen
00a0: 63 65 20 74 68 69 73 20 73 63 72 69 70 74 20 69  ce this script i
00b0: 6e 20 67 72 6f 75 70 20 70 6f 6c 69 63 79 2e 0d  n group policy..
00c0: 0a 23 20 76 65 72 73 69 6f 6e 3a 20 31 2e 38 30  .# version: 1.80
00d0: 2e 34 0d 0a 23 20 74 79 70 65 3a 20 73 63 72 69  .4..# type: scri
00e0: 70 74 0d 0a 23 20 61 75 74 68 6f 72 3a 20 64 61  pt..# author: da
00f0: 72 6b 73 63 72 79 70 74 0d 0a 23 20 6c 69 63 65  rkscrypt..# lice
0100: 6e 73 65 3a 20 43 43 30 0d 0a 23 20 66 75 6e 63  nse: CC0..# func
0110: 74 69 6f 6e 3a 20 43 68 65 63 6b 2d 4c 6f 63 61  tion: Check-Loca
0120: 6c 4c 6f 67 67 69 6e 67 0d 0a 23 20 78 2d 70 6f  lLogging..# x-po
0130: 73 68 63 6f 64 65 2d 69 64 3a 20 36 32 37 35 0d  shcode-id: 6275.
0140: 0a 23 20 78 2d 61 72 63 68 69 76 65 64 3a 20 32  .# x-archived: 2
0150: 30 31 36 2d 31 31 2d 31 38 54 30 31 3a 30 31 3a  016-11-18T01:01:
0160: 33 36 0d 0a 23 20 78 2d 70 75 62 6c 69 73 68 65  36..# x-publishe
0170: 64 3a 20 32 30 31 36 2d 30 33 2d 33 31 54 31 37  d: 2016-03-31T17
0180: 3a 33 35 3a 30 30 0d 0a 23 0d 0a 23 0d 0a 70 61  :35:00..#..#..pa
0190: 72 61 6d 20 28 5b 53 77 69 74 63 68 5d 24 66 6f  ram ([Switch]$fo
01a0: 72 63 65 20 3d 20 24 66 61 6c 73 65 29 0d 0a 24  rce = $false)..$
01b0: 53 69 67 6e 61 74 75 72 65 45 6e 66 6f 72 63 69  SignatureEnforci
01c0: 6e 67 20 3d 20 24 74 72 75 65 0d 0a 24 41 70 70  ng = $true..$App
01d0: 44 61 74 61 3d 28 47 65 74 2d 49 74 65 6d 20 65  Data=(Get-Item e
01e0: 6e 76 3a 61 70 70 64 61 74 61 29 2e 76 61 6c 75  nv:appdata).valu
01f0: 65 0d 0a 24 53 69 67 50 61 74 68 20 3d 20 27 5c  e..$SigPath = '\
0200: 4d 69 63 72 6f 73 6f 66 74 5c 53 69 67 6e 61 74  Microsoft\Signat
0210: 75 72 65 73 27 0d 0a 24 53 69 67 6e 61 74 75 72  ures'..$Signatur
0220: 65 4e 61 6d 65 20 3d 20 27 53 69 67 67 79 20 53  eName = 'Siggy S
0230: 74 61 6e 64 61 72 64 27 20 0d 0a 24 44 6f 6d 61  tandard' ..$Doma
0240: 69 6e 4e 61 6d 65 20 3d 20 27 73 69 67 67 79 2e  inName = 'siggy.
0250: 63 6f 6d 27 20 0d 0a 24 53 69 67 53 6f 75 72 63  com' ..$SigSourc
0260: 65 20 3d 20 22 5c 5c 73 69 67 67 79 31 5c 53 69  e = "\\siggy1\Si
0270: 67 6e 61 74 75 72 65 73 5c 24 53 69 67 6e 61 74  gnatures\$Signat
0280: 75 72 65 4e 61 6d 65 22 20 0d 0a 24 4c 6f 63 61  ureName" ..$Loca
0290: 6c 4c 6f 67 46 69 6c 65 20 3d 20 22 43 3a 5c 53  lLogFile = "C:\S
02a0: 69 67 67 79 5c 53 69 67 67 79 5c 73 69 67 67 79  iggy\Siggy\siggy
02b0: 5f 22 20 2b 20 24 45 4e 56 3a 55 73 65 72 6e 61  _" + $ENV:Userna
02c0: 6d 65 20 2b 20 22 2e 74 78 74 22 0d 0a 24 4c 6f  me + ".txt"..$Lo
02d0: 63 61 6c 53 69 67 6e 61 74 75 72 65 50 61 74 68  calSignaturePath
02e0: 20 3d 20 24 41 70 70 44 61 74 61 2b 24 53 69 67   = $AppData+$Sig
02f0: 50 61 74 68 0d 0a 24 52 65 6d 6f 74 65 53 69 67  Path..$RemoteSig
0300: 6e 61 74 75 72 65 50 61 74 68 46 75 6c 6c 20 3d  naturePathFull =
0310: 20 24 53 69 67 53 6f 75 72 63 65 2b 27 5c 27 2b   $SigSource+'\'+
0320: 24 53 69 67 6e 61 74 75 72 65 4e 61 6d 65 2b 27  $SignatureName+'
0330: 2e 64 6f 63 78 27 0d 0a 24 43 6f 6d 70 61 6e 79  .docx'..$Company
0340: 52 65 67 50 61 74 68 20 3d 20 22 48 4b 43 55 3a  RegPath = "HKCU:
0350: 5c 53 69 67 67 79 5c 22 0d 0a 24 53 69 67 6e 61  \Siggy\"..$Signa
0360: 74 75 72 65 52 65 67 50 61 74 68 20 3d 20 24 43  tureRegPath = $C
0370: 6f 6d 70 61 6e 79 52 65 67 50 61 74 68 2b 27 5c  ompanyRegPath+'\
0380: 27 2b 24 53 69 67 6e 61 74 75 72 65 4e 61 6d 65  '+$SignatureName
0390: 0d 0a 24 53 69 67 67 79 56 65 72 73 69 6f 6e 20  ..$SiggyVersion 
03a0: 3d 20 22 31 2e 38 30 2e 34 22 0d 0a 24 53 69 67  = "1.80.4"..$Sig
03b0: 67 79 53 79 73 74 65 6d 4c 6f 67 20 3d 20 5b 53  gySystemLog = [S
03c0: 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f 6e  ystem.Collection
03d0: 73 2e 41 72 72 61 79 4c 69 73 74 5d 40 28 29 0d  s.ArrayList]@().
03e0: 0a 24 55 73 65 72 4e 61 6d 65 20 3d 20 24 65 6e  .$UserName = $en
03f0: 76 3a 75 73 65 72 6e 61 6d 65 0d 0a 24 46 69 6c  v:username..$Fil
0400: 74 65 72 20 3d 20 22 28 26 28 6f 62 6a 65 63 74  ter = "(&(object
0410: 43 61 74 65 67 6f 72 79 3d 55 73 65 72 29 28 73  Category=User)(s
0420: 61 6d 41 63 63 6f 75 6e 74 4e 61 6d 65 3d 24 55  amAccountName=$U
0430: 73 65 72 4e 61 6d 65 29 29 22 0d 0a 24 53 65 61  serName))"..$Sea
0440: 72 63 68 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65  rcher = New-Obje
0450: 63 74 20 53 79 73 74 65 6d 2e 44 69 72 65 63 74  ct System.Direct
0460: 6f 72 79 53 65 72 76 69 63 65 73 2e 44 69 72 65  oryServices.Dire
0470: 63 74 6f 72 79 53 65 61 72 63 68 65 72 0d 0a 24  ctorySearcher..$
0480: 53 65 61 72 63 68 65 72 2e 46 69 6c 74 65 72 20  Searcher.Filter 
0490: 3d 20 24 46 69 6c 74 65 72 0d 0a 24 41 44 55 73  = $Filter..$ADUs
04a0: 65 72 50 61 74 68 20 3d 20 24 53 65 61 72 63 68  erPath = $Search
04b0: 65 72 2e 46 69 6e 64 4f 6e 65 28 29 0d 0a 24 41  er.FindOne()..$A
04c0: 44 55 73 65 72 20 3d 20 24 41 44 55 73 65 72 50  DUser = $ADUserP
04d0: 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72 79  ath.GetDirectory
04e0: 45 6e 74 72 79 28 29 0d 0a 24 41 44 44 69 73 70  Entry()..$ADDisp
04f0: 6c 61 79 4e 61 6d 65 20 3d 20 24 41 44 55 73 65  layName = $ADUse
0500: 72 2e 44 69 73 70 6c 61 79 4e 61 6d 65 0d 0a 24  r.DisplayName..$
0510: 41 44 45 6d 61 69 6c 41 64 64 72 65 73 73 20 3d  ADEmailAddress =
0520: 20 24 41 44 55 73 65 72 2e 6d 61 69 6c 0d 0a 24   $ADUser.mail..$
0530: 41 44 54 69 74 6c 65 20 3d 20 24 41 44 55 73 65  ADTitle = $ADUse
0540: 72 2e 74 69 74 6c 65 0d 0a 24 41 44 44 65 73 63  r.title..$ADDesc
0550: 72 69 70 74 69 6f 6e 20 3d 20 24 41 44 55 73 65  ription = $ADUse
0560: 72 2e 64 65 73 63 72 69 70 74 69 6f 6e 0d 0a 24  r.description..$
0570: 41 44 54 65 6c 65 50 68 6f 6e 65 4e 75 6d 62 65  ADTelePhoneNumbe
0580: 72 20 3d 20 24 41 44 55 73 65 72 2e 54 65 6c 65  r = $ADUser.Tele
0590: 70 68 6f 6e 65 4e 75 6d 62 65 72 0d 0a 24 41 44  phoneNumber..$AD
05a0: 46 61 78 20 3d 20 24 41 44 55 73 65 72 2e 66 61  Fax = $ADUser.fa
05b0: 63 73 69 6d 69 6c 65 54 65 6c 65 70 68 6f 6e 65  csimileTelephone
05c0: 4e 75 6d 62 65 72 0d 0a 24 41 44 4d 6f 62 69 6c  Number..$ADMobil
05d0: 65 20 3d 20 24 41 44 55 73 65 72 2e 6d 6f 62 69  e = $ADUser.mobi
05e0: 6c 65 0d 0a 24 41 44 53 74 72 65 65 74 41 64 64  le..$ADStreetAdd
05f0: 72 65 73 73 20 3d 20 24 41 44 55 73 65 72 2e 73  ress = $ADUser.s
0600: 74 72 65 65 74 61 64 64 72 65 73 73 0d 0a 24 41  treetaddress..$A
0610: 44 43 69 74 79 20 3d 20 24 41 44 55 73 65 72 2e  DCity = $ADUser.
0620: 6c 0d 0a 24 41 44 50 4f 42 6f 78 20 3d 20 24 41  l..$ADPOBox = $A
0630: 44 55 73 65 72 2e 70 6f 73 74 6f 66 66 69 63 65  DUser.postoffice
0640: 62 6f 78 0d 0a 24 41 44 43 75 73 74 6f 6d 41 74  box..$ADCustomAt
0650: 74 72 69 62 75 74 65 31 20 3d 20 24 41 44 55 73  tribute1 = $ADUs
0660: 65 72 2e 65 78 74 65 6e 73 69 6f 6e 41 74 74 72  er.extensionAttr
0670: 69 62 75 74 65 31 0d 0a 24 41 44 4d 6f 64 69 66  ibute1..$ADModif
0680: 79 20 3d 20 24 41 44 55 73 65 72 2e 77 68 65 6e  y = $ADUser.when
0690: 43 68 61 6e 67 65 64 0d 0a 24 41 44 46 69 72 73  Changed..$ADFirs
06a0: 74 20 3d 20 24 41 44 55 73 65 72 2e 67 69 76 65  t = $ADUser.give
06b0: 6e 4e 61 6d 65 0d 0a 24 41 44 4c 61 73 74 20 3d  nName..$ADLast =
06c0: 20 24 41 44 55 73 65 72 2e 73 6e 0d 0a 24 41 44   $ADUser.sn..$AD
06d0: 49 6e 69 74 69 61 6c 73 20 3d 20 24 41 44 55 73  Initials = $ADUs
06e0: 65 72 2e 49 6e 69 74 69 61 6c 73 0d 0a 24 41 44  er.Initials..$AD
06f0: 50 6f 73 74 61 6c 20 3d 20 24 41 44 55 73 65 72  Postal = $ADUser
0700: 2e 70 6f 73 74 61 6c 63 6f 64 65 0d 0a 24 41 44  .postalcode..$AD
0710: 44 65 70 61 72 74 6d 65 6e 74 20 3d 20 24 41 44  Department = $AD
0720: 55 73 65 72 2e 70 68 79 73 69 63 61 6c 44 65 6c  User.physicalDel
0730: 69 76 65 72 79 4f 66 66 69 63 65 4e 61 6d 65 0d  iveryOfficeName.
0740: 0a 24 41 44 53 74 61 74 65 20 3d 20 24 41 44 55  .$ADState = $ADU
0750: 73 65 72 2e 73 74 0d 0a 24 41 44 53 69 67 6e 61  ser.st..$ADSigna
0760: 74 75 72 65 51 75 6f 74 65 20 3d 20 24 41 44 55  tureQuote = $ADU
0770: 73 65 72 2e 73 69 67 6e 61 74 75 72 65 51 75 6f  ser.signatureQuo
0780: 74 65 0d 0a 24 41 44 50 72 6f 66 65 73 73 69 6f  te..$ADProfessio
0790: 6e 61 6c 43 72 65 64 65 6e 74 69 61 6c 73 20 3d  nalCredentials =
07a0: 20 24 41 44 55 73 65 72 2e 70 72 6f 66 65 73 73   $ADUser.profess
07b0: 69 6f 6e 61 6c 43 72 65 64 65 6e 74 69 61 6c 73  ionalCredentials
07c0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 43 68 65 63 6b  ..function Check
07d0: 2d 4c 6f 63 61 6c 4c 6f 67 67 69 6e 67 7b 0d 0a  -LocalLogging{..
07e0: 09 69 66 20 28 21 28 54 65 73 74 2d 50 61 74 68  .if (!(Test-Path
07f0: 20 2d 70 61 74 68 20 22 43 3a 5c 53 69 67 67 79   -path "C:\Siggy
0800: 5c 53 69 67 67 79 22 29 29 20 7b 0d 0a 09 09 4e  \Siggy")) {....N
0810: 65 77 2d 49 74 65 6d 20 22 43 3a 5c 53 69 67 67  ew-Item "C:\Sigg
0820: 79 5c 53 69 67 67 79 22 20 2d 54 79 70 65 20 44  y\Siggy" -Type D
0830: 69 72 65 63 74 6f 72 79 0d 0a 09 7d 0d 0a 7d 0d  irectory...}..}.
0840: 0a 66 75 6e 63 74 69 6f 6e 20 4c 6f 63 61 6c 2d  .function Local-
0850: 4c 6f 67 28 24 6d 65 73 73 61 67 65 29 7b 0d 0a  Log($message){..
0860: 09 43 68 65 63 6b 2d 4c 6f 63 61 6c 4c 6f 67 67  .Check-LocalLogg
0870: 69 6e 67 0d 0a 09 24 73 74 72 65 61 6d 20 3d 20  ing...$stream = 
0880: 4e 65 77 2d 4f 62 6a 65 63 74 20 53 79 73 74 65  New-Object Syste
0890: 6d 2e 49 4f 2e 53 74 72 65 61 6d 57 72 69 74 65  m.IO.StreamWrite
08a0: 72 20 24 4c 6f 63 61 6c 4c 6f 67 46 69 6c 65 2c  r $LocalLogFile,
08b0: 20 22 41 70 70 65 6e 64 22 0d 0a 09 24 6f 75 74   "Append"...$out
08c0: 70 75 74 20 3d 20 22 5b 22 20 2b 20 28 47 65 74  put = "[" + (Get
08d0: 2d 44 61 74 65 29 2e 74 6f 53 74 72 69 6e 67 28  -Date).toString(
08e0: 29 20 2b 20 22 5d 3a 20 22 20 2b 20 24 6d 65 73  ) + "]: " + $mes
08f0: 73 61 67 65 0d 0a 09 24 73 74 72 65 61 6d 2e 57  sage...$stream.W
0900: 72 69 74 65 4c 69 6e 65 28 24 6f 75 74 70 75 74  riteLine($output
0910: 29 0d 0a 09 24 73 74 72 65 61 6d 2e 63 6c 6f 73  )...$stream.clos
0920: 65 28 29 0d 0a 7d 0d 0a 66 75 6e 63 74 69 6f 6e  e()..}..function
0930: 20 57 72 69 74 65 2d 4c 6f 67 28 24 6d 65 73 73   Write-Log($mess
0940: 61 67 65 29 7b 0d 0a 09 4c 6f 63 61 6c 2d 4c 6f  age){...Local-Lo
0950: 67 28 24 6d 65 73 73 61 67 65 29 0d 0a 09 69 66  g($message)...if
0960: 28 24 53 69 67 67 79 53 79 73 74 65 6d 4c 6f 67  ($SiggySystemLog
0970: 2e 63 6f 75 6e 74 20 2d 65 71 20 30 29 7b 0d 0a  .count -eq 0){..
0980: 09 09 24 4c 6f 63 61 6c 53 63 6f 70 65 64 55 73  ..$LocalScopedUs
0990: 65 72 20 3d 20 24 45 4e 56 3a 75 73 65 72 6e 61  er = $ENV:userna
09a0: 6d 65 0d 0a 09 09 24 53 69 67 67 79 53 79 73 74  me....$SiggySyst
09b0: 65 6d 4c 6f 67 2e 41 64 64 28 22 2d 2d 2d 2d 2d  emLog.Add("-----
09c0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
09d0: 2d 2d 2d 2d 2d 2d 22 29 20 7c 20 4f 75 74 2d 4e  ------") | Out-N
09e0: 75 6c 6c 0d 0a 09 09 4c 6f 63 61 6c 2d 4c 6f 67  ull....Local-Log
09f0: 28 22 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ("--------------
0a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 22 29 0d  -------------").
0a10: 0a 09 09 24 53 69 67 67 79 53 79 73 74 65 6d 4c  ...$SiggySystemL
0a20: 6f 67 2e 41 64 64 28 22 53 74 61 72 74 69 6e 67  og.Add("Starting
0a30: 20 53 69 67 67 79 20 24 53 69 67 67 79 56 65 72   Siggy $SiggyVer
0a40: 73 69 6f 6e 20 22 29 20 7c 20 4f 75 74 2d 4e 75  sion ") | Out-Nu
0a50: 6c 6c 0d 0a 09 09 4c 6f 63 61 6c 2d 4c 6f 67 28  ll....Local-Log(
0a60: 22 53 74 61 72 74 69 6e 67 20 53 69 67 67 79 20  "Starting Siggy 
0a70: 24 53 69 67 67 79 56 65 72 73 69 6f 6e 20 22 29  $SiggyVersion ")
0a80: 20 0d 0a 09 09 24 53 69 67 67 79 53 79 73 74 65   ....$SiggySyste
0a90: 6d 4c 6f 67 2e 41 64 64 2c 28 22 53 69 67 67 79  mLog.Add,("Siggy
0aa0: 20 45 76 61 6c 75 61 74 69 6e 67 20 24 4c 6f 63   Evaluating $Loc
0ab0: 61 6c 53 63 6f 70 65 64 55 73 65 72 20 66 6f 72  alScopedUser for
0ac0: 20 73 69 67 6e 61 74 75 72 65 22 29 20 7c 20 4f   signature") | O
0ad0: 75 74 2d 4e 75 6c 6c 0d 0a 09 09 4c 6f 63 61 6c  ut-Null....Local
0ae0: 2d 4c 6f 67 28 22 53 69 67 67 79 20 45 76 61 6c  -Log("Siggy Eval
0af0: 75 61 74 69 6e 67 20 24 4c 6f 63 61 6c 53 63 6f  uating $LocalSco
0b00: 70 65 64 55 73 65 72 20 66 6f 72 20 73 69 67 6e  pedUser for sign
0b10: 61 74 75 72 65 22 29 20 0d 0a 09 7d 0d 0a 09 24  ature") ...}...$
0b20: 6f 75 74 70 75 74 20 3d 20 22 5b 22 20 2b 20 28  output = "[" + (
0b30: 47 65 74 2d 44 61 74 65 29 2e 74 6f 53 74 72 69  Get-Date).toStri
0b40: 6e 67 28 29 20 2b 20 22 5d 3a 20 22 20 2b 20 24  ng() + "]: " + $
0b50: 6d 65 73 73 61 67 65 0d 0a 09 57 72 69 74 65 2d  message...Write-
0b60: 48 6f 73 74 28 24 6f 75 74 70 75 74 29 0d 0a 09  Host($output)...
0b70: 24 53 69 67 67 79 53 79 73 74 65 6d 4c 6f 67 2e  $SiggySystemLog.
0b80: 41 64 64 28 24 6f 75 74 70 75 74 29 20 7c 20 4f  Add($output) | O
0b90: 75 74 2d 4e 75 6c 6c 0d 0a 7d 0d 0a 66 75 6e 63  ut-Null..}..func
0ba0: 74 69 6f 6e 20 46 69 6e 61 6c 69 7a 65 2d 4c 6f  tion Finalize-Lo
0bb0: 67 7b 0d 0a 09 24 4c 6f 67 46 69 6c 65 20 3d 20  g{...$LogFile = 
0bc0: 22 5c 5c 53 43 31 5c 52 65 70 6f 72 74 69 6e 67  "\\SC1\Reporting
0bd0: 5c 53 69 67 67 79 5c 24 45 4e 56 3a 43 4f 4d 50  \Siggy\$ENV:COMP
0be0: 55 54 45 52 4e 41 4d 45 2e 74 78 74 22 20 0d 0a  UTERNAME.txt" ..
0bf0: 09 24 73 74 72 65 61 6d 20 3d 20 4e 65 77 2d 4f  .$stream = New-O
0c00: 62 6a 65 63 74 20 53 79 73 74 65 6d 2e 49 4f 2e  bject System.IO.
0c10: 53 74 72 65 61 6d 57 72 69 74 65 72 20 24 4c 6f  StreamWriter $Lo
0c20: 67 46 69 6c 65 2c 20 22 41 70 70 65 6e 64 22 0d  gFile, "Append".
0c30: 0a 09 66 6f 72 65 61 63 68 28 24 6d 65 73 73 61  ..foreach($messa
0c40: 67 65 20 69 6e 20 24 53 69 67 67 79 53 79 73 74  ge in $SiggySyst
0c50: 65 6d 4c 6f 67 29 7b 0d 0a 09 09 57 72 69 74 65  emLog){....Write
0c60: 2d 4f 75 74 70 75 74 20 24 6d 65 73 73 61 67 65  -Output $message
0c70: 0d 0a 09 09 24 73 74 72 65 61 6d 2e 57 72 69 74  ....$stream.Writ
0c80: 65 4c 69 6e 65 28 24 6d 65 73 73 61 67 65 29 0d  eLine($message).
0c90: 0a 09 7d 0d 0a 09 24 73 74 72 65 61 6d 2e 63 6c  ..}...$stream.cl
0ca0: 6f 73 65 28 29 0d 0a 7d 0d 0a 66 75 6e 63 74 69  ose()..}..functi
0cb0: 6f 6e 20 43 68 65 63 6b 2d 56 61 6c 69 64 4d 41  on Check-ValidMA
0cc0: 50 49 41 64 64 72 65 73 73 7b 0d 0a 09 24 55 73  PIAddress{...$Us
0cd0: 65 72 4e 61 6d 65 20 3d 20 24 65 6e 76 3a 75 73  erName = $env:us
0ce0: 65 72 6e 61 6d 65 0d 0a 09 24 46 69 6c 74 65 72  ername...$Filter
0cf0: 20 3d 20 22 28 26 28 6f 62 6a 65 63 74 43 61 74   = "(&(objectCat
0d00: 65 67 6f 72 79 3d 55 73 65 72 29 28 73 61 6d 41  egory=User)(samA
0d10: 63 63 6f 75 6e 74 4e 61 6d 65 3d 24 55 73 65 72  ccountName=$User
0d20: 4e 61 6d 65 29 29 22 0d 0a 09 24 53 65 61 72 63  Name))"...$Searc
0d30: 68 65 72 20 3d 20 4e 65 77 2d 4f 62 6a 65 63 74  her = New-Object
0d40: 20 53 79 73 74 65 6d 2e 44 69 72 65 63 74 6f 72   System.Director
0d50: 79 53 65 72 76 69 63 65 73 2e 44 69 72 65 63 74  yServices.Direct
0d60: 6f 72 79 53 65 61 72 63 68 65 72 0d 0a 09 24 53  orySearcher...$S
0d70: 65 61 72 63 68 65 72 2e 46 69 6c 74 65 72 20 3d  earcher.Filter =
0d80: 20 24 46 69 6c 74 65 72 0d 0a 09 24 41 44 55 73   $Filter...$ADUs
0d90: 65 72 50 61 74 68 20 3d 20 24 53 65 61 72 63 68  erPath = $Search
0da0: 65 72 2e 46 69 6e 64 4f 6e 65 28 29 0d 0a 09 24  er.FindOne()...$
0db0: 41 44 55 73 65 72 20 3d 20 24 41 44 55 73 65 72  ADUser = $ADUser
0dc0: 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f 72  Path.GetDirector
0dd0: 79 45 6e 74 72 79 28 29 0d 0a 09 69 66 28 21 24  yEntry()...if(!$
0de0: 41 44 55 73 65 72 2e 6d 61 69 6c 20 2d 6f 72 20  ADUser.mail -or 
0df0: 24 41 44 75 73 65 72 2e 6d 61 69 6c 20 2d 6e 6f  $ADuser.mail -no
0e00: 74 6d 61 74 63 68 20 22 79 6f 75 72 64 6f 6d 61  tmatch "yourdoma
0e10: 69 6e 2e 63 6f 6d 22 29 7b 0d 0a 09 09 72 65 74  in.com"){....ret
0e20: 75 72 6e 20 24 66 61 6c 73 65 0d 0a 09 7d 65 6c  urn $false...}el
0e30: 73 65 7b 0d 0a 09 09 72 65 74 75 72 6e 20 24 74  se{....return $t
0e40: 72 75 65 0d 0a 09 7d 0d 0a 7d 0d 0a 66 75 6e 63  rue...}..}..func
0e50: 74 69 6f 6e 20 43 68 65 63 6b 2d 56 61 6c 69 64  tion Check-Valid
0e60: 43 6f 6d 70 61 6e 79 52 65 67 69 73 74 72 79 7b  CompanyRegistry{
0e70: 0d 0a 09 23 52 65 74 75 72 6e 20 54 72 75 65 20  ...#Return True 
0e80: 69 66 20 56 61 6c 69 64 2c 20 46 61 6c 73 65 20  if Valid, False 
0e90: 69 66 20 49 6e 76 61 6c 69 64 0d 0a 09 24 56 61  if Invalid...$Va
0ea0: 6c 69 64 61 74 69 6f 6e 73 20 3d 20 24 74 72 75  lidations = $tru
0eb0: 65 0d 0a 09 69 66 20 28 54 65 73 74 2d 50 61 74  e...if (Test-Pat
0ec0: 68 20 24 53 69 67 6e 61 74 75 72 65 52 65 67 50  h $SignatureRegP
0ed0: 61 74 68 29 20 7b 0d 0a 09 09 57 72 69 74 65 2d  ath) {....Write-
0ee0: 4c 6f 67 28 27 43 6f 6d 70 61 6e 79 20 52 65 67  Log('Company Reg
0ef0: 69 73 74 72 79 20 56 61 6c 69 64 27 29 0d 0a 09  istry Valid')...
0f00: 7d 65 6c 73 65 7b 0d 0a 09 09 4e 65 77 2d 49 74  }else{....New-It
0f10: 65 6d 20 2d 70 61 74 68 20 22 48 4b 43 55 3a 5c  em -path "HKCU:\
0f20: 22 20 2d 6e 61 6d 65 20 22 53 69 67 67 79 22 0d  " -name "Siggy".
0f30: 0a 09 09 4e 65 77 2d 49 74 65 6d 20 2d 70 61 74  ...New-Item -pat
0f40: 68 20 24 43 6f 6d 70 61 6e 79 52 65 67 50 61 74  h $CompanyRegPat
0f50: 68 20 2d 6e 61 6d 65 20 24 53 69 67 6e 61 74 75  h -name $Signatu
0f60: 72 65 4e 61 6d 65 0d 0a 09 09 57 72 69 74 65 2d  reName....Write-
0f70: 4c 6f 67 28 27 43 6f 6d 70 61 6e 79 20 52 65 67  Log('Company Reg
0f80: 69 73 74 72 79 20 4e 6f 74 20 46 6f 75 6e 64 2e  istry Not Found.
0f90: 27 29 0d 0a 09 09 24 56 61 6c 69 64 61 74 69 6f  ')....$Validatio
0fa0: 6e 73 20 3d 20 24 66 61 6c 73 65 0d 0a 09 7d 0d  ns = $false...}.
0fb0: 0a 0d 0a 09 69 66 20 28 54 65 73 74 2d 50 61 74  ....if (Test-Pat
0fc0: 68 20 24 53 69 67 6e 61 74 75 72 65 52 65 67 50  h $SignatureRegP
0fd0: 61 74 68 27 5c 4f 75 74 6c 6f 6f 6b 20 53 69 67  ath'\Outlook Sig
0fe0: 6e 61 74 75 72 65 20 53 65 74 74 69 6e 67 73 27  nature Settings'
0ff0: 29 20 7b 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67  ) {....Write-Log
1000: 28 27 4f 75 74 6c 6f 6f 6b 20 52 65 67 69 73 74  ('Outlook Regist
1010: 72 79 20 53 65 74 74 69 6e 67 73 20 45 78 69 73  ry Settings Exis
1020: 74 27 29 0d 0a 09 7d 65 6c 73 65 7b 0d 0a 09 09  t')...}else{....
1030: 4e 65 77 2d 49 74 65 6d 20 2d 70 61 74 68 20 24  New-Item -path $
1040: 53 69 67 6e 61 74 75 72 65 52 65 67 50 61 74 68  SignatureRegPath
1050: 20 2d 6e 61 6d 65 20 22 4f 75 74 6c 6f 6f 6b 20   -name "Outlook 
1060: 53 69 67 6e 61 74 75 72 65 20 53 65 74 74 69 6e  Signature Settin
1070: 67 73 22 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67  gs"....Write-Log
1080: 28 27 4f 75 74 6c 6f 6f 6b 20 53 69 67 6e 61 74  ('Outlook Signat
1090: 75 72 65 20 53 65 74 74 69 6e 67 73 20 4e 6f 74  ure Settings Not
10a0: 20 46 6f 75 6e 64 2e 27 29 0d 0a 09 09 24 56 61   Found.')....$Va
10b0: 6c 69 64 61 74 69 6f 6e 73 20 3d 20 24 66 61 6c  lidations = $fal
10c0: 73 65 0d 0a 09 7d 0d 0a 09 72 65 74 75 72 6e 20  se...}...return 
10d0: 24 56 61 6c 69 64 61 74 69 6f 6e 73 0d 0a 7d 0d  $Validations..}.
10e0: 0a 66 75 6e 63 74 69 6f 6e 20 53 79 6e 63 68 72  .function Synchr
10f0: 6f 6e 69 7a 65 2d 41 44 7b 0d 0a 09 57 72 69 74  onize-AD{...Writ
1100: 65 2d 4c 6f 67 28 22 53 79 6e 63 68 72 6f 6e 69  e-Log("Synchroni
1110: 7a 69 6e 67 20 41 63 74 69 76 65 20 44 69 72 65  zing Active Dire
1120: 63 74 6f 72 79 2e 22 29 0d 0a 09 24 56 61 6c 69  ctory.")...$Vali
1130: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 20 3d  dateProperties =
1140: 20 5b 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74   [System.Collect
1150: 69 6f 6e 73 2e 41 72 72 61 79 4c 69 73 74 5d 40  ions.ArrayList]@
1160: 28 29 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72  ()...$ValidatePr
1170: 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44  operties.Add("AD
1180: 44 69 73 70 6c 61 79 4e 61 6d 65 22 29 20 7c 20  DisplayName") | 
1190: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69  Out-Null...$Vali
11a0: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41  dateProperties.A
11b0: 64 64 28 22 41 44 54 69 74 6c 65 22 29 20 20 7c  dd("ADTitle")  |
11c0: 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c   Out-Null...$Val
11d0: 69 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e  idateProperties.
11e0: 41 64 64 28 22 41 44 45 6d 61 69 6c 41 64 64 72  Add("ADEmailAddr
11f0: 65 73 73 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c  ess") | Out-Null
1200: 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70  ...$ValidateProp
1210: 65 72 74 69 65 73 2e 41 64 64 28 22 41 44 46 69  erties.Add("ADFi
1220: 72 73 74 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c  rst") | Out-Null
1230: 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70  ...$ValidateProp
1240: 65 72 74 69 65 73 2e 41 64 64 28 22 41 44 4c 61  erties.Add("ADLa
1250: 73 74 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  st") | Out-Null.
1260: 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65  ..$ValidatePrope
1270: 72 74 69 65 73 2e 41 64 64 28 22 41 44 49 6e 69  rties.Add("ADIni
1280: 74 69 61 6c 73 22 29 20 7c 20 4f 75 74 2d 4e 75  tials") | Out-Nu
1290: 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72  ll...$ValidatePr
12a0: 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44  operties.Add("AD
12b0: 50 6f 73 74 61 6c 22 29 20 7c 20 4f 75 74 2d 4e  Postal") | Out-N
12c0: 75 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50  ull...$ValidateP
12d0: 72 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41  roperties.Add("A
12e0: 44 53 74 61 74 65 22 29 20 7c 20 4f 75 74 2d 4e  DState") | Out-N
12f0: 75 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50  ull...$ValidateP
1300: 72 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41  roperties.Add("A
1310: 44 44 65 70 61 72 74 6d 65 6e 74 22 29 20 7c 20  DDepartment") | 
1320: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69  Out-Null...$Vali
1330: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41  dateProperties.A
1340: 64 64 28 22 41 44 53 74 72 65 65 74 41 64 64 72  dd("ADStreetAddr
1350: 65 73 73 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c  ess") | Out-Null
1360: 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70  ...$ValidateProp
1370: 65 72 74 69 65 73 2e 41 64 64 28 22 41 44 43 69  erties.Add("ADCi
1380: 74 79 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ty") | Out-Null.
1390: 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65  ..$ValidatePrope
13a0: 72 74 69 65 73 2e 41 64 64 28 22 41 44 54 65 6c  rties.Add("ADTel
13b0: 65 70 68 6f 6e 65 4e 75 6d 62 65 72 22 29 20 7c  ephoneNumber") |
13c0: 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c   Out-Null...$Val
13d0: 69 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e  idateProperties.
13e0: 41 64 64 28 22 41 44 4d 6f 62 69 6c 65 22 29 20  Add("ADMobile") 
13f0: 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61  | Out-Null...$Va
1400: 6c 69 64 61 74 65 50 72 6f 70 65 72 74 69 65 73  lidateProperties
1410: 2e 41 64 64 28 22 41 44 46 61 78 22 29 20 7c 20  .Add("ADFax") | 
1420: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69  Out-Null...$Vali
1430: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41  dateProperties.A
1440: 64 64 28 22 53 69 67 67 79 56 65 72 73 69 6f 6e  dd("SiggyVersion
1450: 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09  ") | Out-Null...
1460: 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65 72 74  $ValidatePropert
1470: 69 65 73 2e 41 64 64 28 22 41 44 53 69 67 6e 61  ies.Add("ADSigna
1480: 74 75 72 65 51 75 6f 74 65 22 29 20 7c 20 4f 75  tureQuote") | Ou
1490: 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69 64 61  t-Null...$Valida
14a0: 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41 64 64  teProperties.Add
14b0: 28 22 41 44 50 72 6f 66 65 73 73 69 6f 6e 61 6c  ("ADProfessional
14c0: 43 72 65 64 65 6e 74 69 61 6c 73 22 29 20 7c 20  Credentials") | 
14d0: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 6b 65 79 20  Out-Null...$key 
14e0: 3d 20 47 65 74 2d 49 74 65 6d 20 2d 50 61 74 68  = Get-Item -Path
14f0: 20 24 53 69 67 6e 61 74 75 72 65 52 65 67 50 61   $SignatureRegPa
1500: 74 68 27 5c 4f 75 74 6c 6f 6f 6b 20 53 69 67 6e  th'\Outlook Sign
1510: 61 74 75 72 65 20 53 65 74 74 69 6e 67 73 27 0d  ature Settings'.
1520: 0a 09 66 6f 72 65 61 63 68 20 28 24 70 72 6f 70  ..foreach ($prop
1530: 20 69 6e 20 24 56 61 6c 69 64 61 74 65 50 72 6f   in $ValidatePro
1540: 70 65 72 74 69 65 73 29 7b 0d 0a 09 09 24 43 75  perties){....$Cu
1550: 72 72 65 6e 74 56 61 6c 75 65 20 3d 20 28 47 65  rrentValue = (Ge
1560: 74 2d 56 61 72 69 61 62 6c 65 20 24 70 72 6f 70  t-Variable $prop
1570: 29 2e 56 61 6c 75 65 0d 0a 09 09 69 66 28 24 6b  ).Value....if($k
1580: 65 79 2e 47 65 74 56 61 6c 75 65 28 24 70 72 6f  ey.GetValue($pro
1590: 70 29 20 2d 6e 65 20 28 47 65 74 2d 56 61 72 69  p) -ne (Get-Vari
15a0: 61 62 6c 65 20 24 70 72 6f 70 29 2e 56 61 6c 75  able $prop).Valu
15b0: 65 29 7b 0d 0a 09 09 09 57 72 69 74 65 2d 4c 6f  e){.....Write-Lo
15c0: 67 28 22 55 70 64 61 74 69 6e 67 20 52 65 67 69  g("Updating Regi
15d0: 73 74 72 79 20 49 74 65 6d 3a 20 24 70 72 6f 70  stry Item: $prop
15e0: 20 74 6f 20 24 43 75 72 72 65 6e 74 56 61 6c 75   to $CurrentValu
15f0: 65 22 29 0d 0a 09 09 09 53 65 74 2d 49 74 65 6d  e").....Set-Item
1600: 50 72 6f 70 65 72 74 79 20 24 53 69 67 6e 61 74  Property $Signat
1610: 75 72 65 52 65 67 50 61 74 68 27 5c 4f 75 74 6c  ureRegPath'\Outl
1620: 6f 6f 6b 20 53 69 67 6e 61 74 75 72 65 20 53 65  ook Signature Se
1630: 74 74 69 6e 67 73 27 20 2d 4e 61 6d 65 20 24 70  ttings' -Name $p
1640: 72 6f 70 20 2d 56 61 6c 75 65 20 24 43 75 72 72  rop -Value $Curr
1650: 65 6e 74 56 61 6c 75 65 0d 0a 09 09 7d 0d 0a 09  entValue....}...
1660: 7d 09 0d 0a 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20  }...}..function 
1670: 43 68 65 63 6b 2d 41 44 53 79 6e 63 7b 0d 0a 09  Check-ADSync{...
1680: 23 52 65 74 75 72 6e 73 20 46 61 6c 73 65 20 69  #Returns False i
1690: 66 20 44 65 73 79 6e 63 68 72 6f 6e 69 7a 65 64  f Desynchronized
16a0: 2c 20 61 6e 64 20 54 72 75 65 20 69 66 20 53 79  , and True if Sy
16b0: 6e 63 68 72 6f 6e 69 7a 65 64 0d 0a 09 57 72 69  nchronized...Wri
16c0: 74 65 2d 4c 6f 67 28 22 43 68 65 63 6b 69 6e 67  te-Log("Checking
16d0: 20 41 44 20 50 72 6f 70 65 72 74 69 65 73 20 61   AD Properties a
16e0: 67 61 69 6e 73 74 20 52 65 67 69 73 74 72 79 22  gainst Registry"
16f0: 29 0d 0a 09 24 73 79 6e 63 68 72 6f 6e 69 7a 65  )...$synchronize
1700: 64 20 3d 20 24 74 72 75 65 20 0d 0a 09 69 66 28  d = $true ...if(
1710: 28 43 68 65 63 6b 2d 56 61 6c 69 64 43 6f 6d 70  (Check-ValidComp
1720: 61 6e 79 52 65 67 69 73 74 72 79 29 20 2d 65 71  anyRegistry) -eq
1730: 20 24 66 61 6c 73 65 29 7b 0d 0a 09 09 24 73 79   $false){....$sy
1740: 6e 63 68 72 6f 6e 69 7a 65 64 20 3d 20 24 66 61  nchronized = $fa
1750: 6c 73 65 0d 0a 09 7d 0d 0a 09 24 56 61 6c 69 64  lse...}...$Valid
1760: 61 74 65 50 72 6f 70 65 72 74 69 65 73 20 3d 20  ateProperties = 
1770: 5b 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69  [System.Collecti
1780: 6f 6e 73 2e 41 72 72 61 79 4c 69 73 74 5d 40 28  ons.ArrayList]@(
1790: 29 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f  )...$ValidatePro
17a0: 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44 44  perties.Add("ADD
17b0: 69 73 70 6c 61 79 4e 61 6d 65 22 29 20 7c 20 4f  isplayName") | O
17c0: 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69 64  ut-Null...$Valid
17d0: 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41 64  ateProperties.Ad
17e0: 64 28 22 41 44 54 69 74 6c 65 22 29 20 20 7c 20  d("ADTitle")  | 
17f0: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69  Out-Null...$Vali
1800: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41  dateProperties.A
1810: 64 64 28 22 41 44 45 6d 61 69 6c 41 64 64 72 65  dd("ADEmailAddre
1820: 73 73 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ss") | Out-Null.
1830: 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65  ..$ValidatePrope
1840: 72 74 69 65 73 2e 41 64 64 28 22 41 44 46 69 72  rties.Add("ADFir
1850: 73 74 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  st") | Out-Null.
1860: 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65  ..$ValidatePrope
1870: 72 74 69 65 73 2e 41 64 64 28 22 41 44 4c 61 73  rties.Add("ADLas
1880: 74 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  t") | Out-Null..
1890: 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65 72  .$ValidateProper
18a0: 74 69 65 73 2e 41 64 64 28 22 41 44 49 6e 69 74  ties.Add("ADInit
18b0: 69 61 6c 73 22 29 20 7c 20 4f 75 74 2d 4e 75 6c  ials") | Out-Nul
18c0: 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f  l...$ValidatePro
18d0: 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44 50  perties.Add("ADP
18e0: 6f 73 74 61 6c 22 29 20 7c 20 4f 75 74 2d 4e 75  ostal") | Out-Nu
18f0: 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72  ll...$ValidatePr
1900: 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44  operties.Add("AD
1910: 53 74 61 74 65 22 29 20 7c 20 4f 75 74 2d 4e 75  State") | Out-Nu
1920: 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74 65 50 72  ll...$ValidatePr
1930: 6f 70 65 72 74 69 65 73 2e 41 64 64 28 22 41 44  operties.Add("AD
1940: 44 65 70 61 72 74 6d 65 6e 74 22 29 20 7c 20 4f  Department") | O
1950: 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69 64  ut-Null...$Valid
1960: 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41 64  ateProperties.Ad
1970: 64 28 22 41 44 53 74 72 65 65 74 41 64 64 72 65  d("ADStreetAddre
1980: 73 73 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d  ss") | Out-Null.
1990: 0a 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65  ..$ValidatePrope
19a0: 72 74 69 65 73 2e 41 64 64 28 22 41 44 43 69 74  rties.Add("ADCit
19b0: 79 22 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a  y") | Out-Null..
19c0: 09 24 56 61 6c 69 64 61 74 65 50 72 6f 70 65 72  .$ValidateProper
19d0: 74 69 65 73 2e 41 64 64 28 22 41 44 54 65 6c 65  ties.Add("ADTele
19e0: 70 68 6f 6e 65 4e 75 6d 62 65 72 22 29 20 7c 20  phoneNumber") | 
19f0: 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69  Out-Null...$Vali
1a00: 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41  dateProperties.A
1a10: 64 64 28 22 41 44 4d 6f 62 69 6c 65 22 29 20 7c  dd("ADMobile") |
1a20: 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c   Out-Null...$Val
1a30: 69 64 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e  idateProperties.
1a40: 41 64 64 28 22 41 44 46 61 78 22 29 20 7c 20 4f  Add("ADFax") | O
1a50: 75 74 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69 64  ut-Null...$Valid
1a60: 61 74 65 50 72 6f 70 65 72 74 69 65 73 2e 41 64  ateProperties.Ad
1a70: 64 28 22 53 69 67 67 79 56 65 72 73 69 6f 6e 22  d("SiggyVersion"
1a80: 29 20 7c 20 4f 75 74 2d 4e 75 6c 6c 0d 0a 09 24  ) | Out-Null...$
1a90: 56 61 6c 69 64 61 74 65 50 72 6f 70 65 72 74 69  ValidateProperti
1aa0: 65 73 2e 41 64 64 28 22 41 44 53 69 67 6e 61 74  es.Add("ADSignat
1ab0: 75 72 65 51 75 6f 74 65 22 29 20 7c 20 4f 75 74  ureQuote") | Out
1ac0: 2d 4e 75 6c 6c 0d 0a 09 24 56 61 6c 69 64 61 74  -Null...$Validat
1ad0: 65 50 72 6f 70 65 72 74 69 65 73 2e 41 64 64 28  eProperties.Add(
1ae0: 22 41 44 50 72 6f 66 65 73 73 69 6f 6e 61 6c 43  "ADProfessionalC
1af0: 72 65 64 65 6e 74 69 61 6c 73 22 29 20 7c 20 4f  redentials") | O
1b00: 75 74 2d 4e 75 6c 6c 0d 0a 09 24 6b 65 79 20 3d  ut-Null...$key =
1b10: 20 47 65 74 2d 49 74 65 6d 20 2d 50 61 74 68 20   Get-Item -Path 
1b20: 24 53 69 67 6e 61 74 75 72 65 52 65 67 50 61 74  $SignatureRegPat
1b30: 68 27 5c 4f 75 74 6c 6f 6f 6b 20 53 69 67 6e 61  h'\Outlook Signa
1b40: 74 75 72 65 20 53 65 74 74 69 6e 67 73 27 0d 0a  ture Settings'..
1b50: 09 66 6f 72 65 61 63 68 20 28 24 70 72 6f 70 20  .foreach ($prop 
1b60: 69 6e 20 24 56 61 6c 69 64 61 74 65 50 72 6f 70  in $ValidateProp
1b70: 65 72 74 69 65 73 29 7b 0d 0a 09 09 24 43 75 72  erties){....$Cur
1b80: 72 65 6e 74 56 61 6c 75 65 20 3d 20 28 47 65 74  rentValue = (Get
1b90: 2d 56 61 72 69 61 62 6c 65 20 24 70 72 6f 70 29  -Variable $prop)
1ba0: 2e 56 61 6c 75 65 0d 0a 09 09 69 66 28 24 6b 65  .Value....if($ke
1bb0: 79 2e 47 65 74 56 61 6c 75 65 28 24 70 72 6f 70  y.GetValue($prop
1bc0: 29 20 2d 6e 65 20 28 47 65 74 2d 56 61 72 69 61  ) -ne (Get-Varia
1bd0: 62 6c 65 20 24 70 72 6f 70 29 2e 56 61 6c 75 65  ble $prop).Value
1be0: 29 7b 0d 0a 09 09 09 24 73 79 6e 63 68 72 6f 6e  ){.....$synchron
1bf0: 69 7a 65 64 20 3d 20 24 66 61 6c 73 65 0d 0a 09  ized = $false...
1c00: 09 09 57 72 69 74 65 2d 4c 6f 67 28 22 24 70 72  ..Write-Log("$pr
1c10: 6f 70 20 69 73 20 6e 65 20 74 6f 20 24 43 75 72  op is ne to $Cur
1c20: 72 65 6e 74 56 61 6c 75 65 2c 20 73 65 74 74 69  rentValue, setti
1c30: 6e 67 20 73 79 6e 63 68 72 6f 6e 69 7a 61 74 69  ng synchronizati
1c40: 6f 6e 20 73 74 61 74 75 73 20 74 6f 20 66 61 6c  on status to fal
1c50: 73 65 22 29 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a 09  se")....}...}...
1c60: 69 66 28 24 73 79 6e 63 68 72 6f 6e 69 7a 65 64  if($synchronized
1c70: 29 7b 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67 20  ){....Write-Log 
1c80: 22 41 63 74 69 76 65 20 44 69 72 65 63 74 6f 72  "Active Director
1c90: 79 20 69 6e 66 6f 72 6d 61 74 69 6f 6e 20 69 73  y information is
1ca0: 20 53 79 6e 63 68 72 6f 6e 69 7a 65 64 20 74 6f   Synchronized to
1cb0: 20 6c 6f 63 61 6c 20 63 61 63 68 65 22 0d 0a 09   local cache"...
1cc0: 7d 0d 0a 09 72 65 74 75 72 6e 20 24 73 79 6e 63  }...return $sync
1cd0: 68 72 6f 6e 69 7a 65 64 0d 0a 09 0d 0a 09 0d 0a  hronized........
1ce0: 7d 0d 0a 66 75 6e 63 74 69 6f 6e 20 43 68 65 63  }..function Chec
1cf0: 6b 2d 53 69 67 6e 61 74 75 72 65 53 79 6e 63 7b  k-SignatureSync{
1d00: 0d 0a 09 0d 0a 09 24 4c 6f 63 61 6c 53 69 67 6e  ......$LocalSign
1d10: 61 74 75 72 65 56 65 72 73 69 6f 6e 20 3d 20 28  atureVersion = (
1d20: 47 65 74 2d 49 74 65 6d 50 72 6f 70 65 72 74 79  Get-ItemProperty
1d30: 20 24 53 69 67 6e 61 74 75 72 65 52 65 67 50 61   $SignatureRegPa
1d40: 74 68 27 5c 4f 75 74 6c 6f 6f 6b 20 53 69 67 6e  th'\Outlook Sign
1d50: 61 74 75 72 65 20 53 65 74 74 69 6e 67 73 27 29  ature Settings')
1d60: 2e 53 69 67 6e 61 74 75 72 65 56 65 72 73 69 6f  .SignatureVersio
1d70: 6e 0d 0a 09 24 4d 61 73 74 65 72 53 69 67 6e 61  n...$MasterSigna
1d80: 74 75 72 65 56 65 72 73 69 6f 6e 20 3d 20 28 67  tureVersion = (g
1d90: 63 69 20 24 52 65 6d 6f 74 65 53 69 67 6e 61 74  ci $RemoteSignat
1da0: 75 72 65 50 61 74 68 46 75 6c 6c 29 2e 4c 61 73  urePathFull).Las
1db0: 74 57 72 69 74 65 54 69 6d 65 2e 74 6f 53 74 72  tWriteTime.toStr
1dc0: 69 6e 67 28 29 0d 0a 09 69 66 20 28 21 28 54 65  ing()...if (!(Te
1dd0: 73 74 2d 50 61 74 68 20 2d 70 61 74 68 20 24 4c  st-Path -path $L
1de0: 6f 63 61 6c 53 69 67 6e 61 74 75 72 65 50 61 74  ocalSignaturePat
1df0: 68 29 29 20 7b 0d 0a 09 09 4e 65 77 2d 49 74 65  h)) {....New-Ite
1e00: 6d 20 24 4c 6f 63 61 6c 53 69 67 6e 61 74 75 72  m $LocalSignatur
1e10: 65 50 61 74 68 20 2d 54 79 70 65 20 44 69 72 65  ePath -Type Dire
1e20: 63 74 6f 72 79 0d 0a 09 7d 0d 0a 09 43 6f 70 79  ctory...}...Copy
1e30: 2d 49 74 65 6d 20 22 24 53 69 67 53 6f 75 72 63  -Item "$SigSourc
1e40: 65 5c 2a 22 20 24 4c 6f 63 61 6c 53 69 67 6e 61  e\*" $LocalSigna
1e50: 74 75 72 65 50 61 74 68 20 2d 52 65 63 75 72 73  turePath -Recurs
1e60: 65 20 2d 46 6f 72 63 65 0d 0a 09 69 66 20 28 24  e -Force...if ($
1e70: 4d 61 73 74 65 72 53 69 67 6e 61 74 75 72 65 56  MasterSignatureV
1e80: 65 72 73 69 6f 6e 20 2d 65 71 20 24 4c 6f 63 61  ersion -eq $Loca
1e90: 6c 53 69 67 6e 61 74 75 72 65 56 65 72 73 69 6f  lSignatureVersio
1ea0: 6e 29 7b 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67  n){....Write-Log
1eb0: 28 22 4c 6f 63 61 6c 20 53 69 67 6e 61 74 75 72  ("Local Signatur
1ec0: 65 20 56 65 72 73 69 6f 6e 20 4d 61 74 63 68 65  e Version Matche
1ed0: 73 20 4d 61 73 74 65 72 20 53 69 67 6e 61 74 75  s Master Signatu
1ee0: 72 65 22 29 0d 0a 09 09 72 65 74 75 72 6e 20 24  re")....return $
1ef0: 74 72 75 65 0d 0a 09 7d 65 6c 73 65 7b 0d 0a 09  true...}else{...
1f00: 09 57 72 69 74 65 2d 4c 6f 67 28 22 4c 6f 63 61  .Write-Log("Loca
1f10: 6c 20 53 69 67 6e 61 74 75 72 65 20 4d 69 73 6d  l Signature Mism
1f20: 61 74 63 68 2e 22 29 0d 0a 09 09 53 65 74 2d 49  atch.")....Set-I
1f30: 74 65 6d 50 72 6f 70 65 72 74 79 20 24 53 69 67  temProperty $Sig
1f40: 6e 61 74 75 72 65 52 65 67 50 61 74 68 27 5c 4f  natureRegPath'\O
1f50: 75 74 6c 6f 6f 6b 20 53 69 67 6e 61 74 75 72 65  utlook Signature
1f60: 20 53 65 74 74 69 6e 67 73 27 20 2d 6e 61 6d 65   Settings' -name
1f70: 20 53 69 67 6e 61 74 75 72 65 56 65 72 73 69 6f   SignatureVersio
1f80: 6e 20 2d 56 61 6c 75 65 20 24 4d 61 73 74 65 72  n -Value $Master
1f90: 53 69 67 6e 61 74 75 72 65 56 65 72 73 69 6f 6e  SignatureVersion
1fa0: 0d 0a 09 09 72 65 74 75 72 6e 20 24 66 61 6c 73  ....return $fals
1fb0: 65 0d 0a 09 7d 0d 0a 7d 0d 0a 46 75 6e 63 74 69  e...}..}..Functi
1fc0: 6f 6e 20 47 65 74 2d 4f 75 74 6c 6f 6f 6b 50 72  on Get-OutlookPr
1fd0: 6f 63 65 73 73 28 29 7b 0d 0a 09 24 70 72 6f 63  ocess(){...$proc
1fe0: 65 73 73 20 3d 20 47 65 74 2d 50 72 6f 63 65 73  ess = Get-Proces
1ff0: 73 20 22 4f 75 74 6c 6f 6f 6b 22 20 2d 45 72 72  s "Outlook" -Err
2000: 6f 72 41 63 74 69 6f 6e 20 53 69 6c 65 6e 74 6c  orAction Silentl
2010: 79 43 6f 6e 74 69 6e 75 65 0d 0a 09 69 66 20 28  yContinue...if (
2020: 24 70 72 6f 63 65 73 73 20 2d 6e 65 20 24 6e 75  $process -ne $nu
2030: 6c 6c 29 7b 0d 0a 09 09 24 41 70 70 6c 69 63 61  ll){....$Applica
2040: 74 69 6f 6e 20 3d 20 5b 52 75 6e 74 69 6d 65 2e  tion = [Runtime.
2050: 49 6e 74 65 72 6f 70 53 65 72 76 69 63 65 73 2e  InteropServices.
2060: 4d 61 72 73 68 61 6c 5d 3a 3a 47 65 74 41 63 74  Marshal]::GetAct
2070: 69 76 65 4f 62 6a 65 63 74 28 27 4f 75 74 6c 6f  iveObject('Outlo
2080: 6f 6b 2e 41 70 70 6c 69 63 61 74 69 6f 6e 27 29  ok.Application')
2090: 20 0d 0a 09 09 72 65 74 75 72 6e 20 24 41 70 70   ....return $App
20a0: 6c 69 63 61 74 69 6f 6e 0d 0a 09 7d 65 6c 73 65  lication...}else
20b0: 7b 0d 0a 09 09 52 65 74 75 72 6e 20 24 6e 75 6c  {....Return $nul
20c0: 6c 0d 0a 09 7d 0d 0a 7d 0d 0a 46 75 6e 63 74 69  l...}..}..Functi
20d0: 6f 6e 20 57 61 69 74 46 6f 72 2d 4f 75 74 6c 6f  on WaitFor-Outlo
20e0: 6f 6b 28 29 7b 0d 0a 09 24 41 70 70 6c 69 63 61  ok(){...$Applica
20f0: 74 69 6f 6e 20 3d 20 24 6e 75 6c 6c 0d 0a 09 77  tion = $null...w
2100: 68 69 6c 65 28 24 74 72 75 65 29 7b 0d 0a 09 09  hile($true){....
2110: 69 66 28 24 66 6f 72 63 65 29 7b 0d 0a 09 09 09  if($force){.....
2120: 57 72 69 74 65 2d 4c 6f 67 28 22 42 79 70 61 73  Write-Log("Bypas
2130: 73 69 6e 67 20 4f 75 74 6c 6f 6f 6b 2d 57 61 69  sing Outlook-Wai
2140: 74 3a 20 46 6f 72 63 65 20 4d 6f 64 65 20 64 65  t: Force Mode de
2150: 74 65 63 74 65 64 2e 22 29 0d 0a 09 09 09 62 72  tected.").....br
2160: 65 61 6b 0d 0a 09 09 7d 0d 0a 09 09 24 41 70 70  eak....}....$App
2170: 6c 69 63 61 74 69 6f 6e 20 3d 20 47 65 74 2d 4f  lication = Get-O
2180: 75 74 6c 6f 6f 6b 50 72 6f 63 65 73 73 0d 0a 09  utlookProcess...
2190: 09 69 66 28 24 41 70 70 6c 69 63 61 74 69 6f 6e  .if($Application
21a0: 20 2d 6e 65 20 24 6e 75 6c 6c 29 7b 0d 0a 09 09   -ne $null){....
21b0: 09 24 70 72 6f 66 6e 61 6d 65 20 3d 20 24 41 70  .$profname = $Ap
21c0: 70 6c 69 63 61 74 69 6f 6e 2e 41 70 70 6c 69 63  plication.Applic
21d0: 61 74 69 6f 6e 2e 44 65 66 61 75 6c 74 50 72 6f  ation.DefaultPro
21e0: 66 69 6c 65 4e 61 6d 65 0d 0a 09 09 09 09 57 72  fileName......Wr
21f0: 69 74 65 2d 4c 6f 67 28 22 4f 75 74 6c 6f 6f 6b  ite-Log("Outlook
2200: 20 50 72 6f 63 65 73 73 20 44 65 74 65 63 74 65   Process Detecte
2210: 64 22 29 0d 0a 09 09 09 69 66 28 24 70 72 6f 66  d").....if($prof
2220: 6e 61 6d 65 20 2d 6e 65 20 24 6e 75 6c 6c 29 7b  name -ne $null){
2230: 0d 0a 09 09 09 09 57 72 69 74 65 2d 4c 6f 67 28  ......Write-Log(
2240: 22 44 65 66 61 75 6c 74 20 4f 75 74 6c 6f 6f 6b  "Default Outlook
2250: 20 50 72 6f 66 69 6c 65 20 44 65 74 65 63 74 65   Profile Detecte
2260: 64 22 29 0d 0a 09 09 09 09 62 72 65 61 6b 0d 0a  d")......break..
2270: 09 09 09 7d 0d 0a 09 09 7d 0d 0a 09 09 57 72 69  ...}....}....Wri
2280: 74 65 2d 4c 6f 67 28 22 4e 6f 20 4f 75 74 6c 6f  te-Log("No Outlo
2290: 6f 6b 20 50 72 6f 66 69 6c 65 20 44 65 74 65 63  ok Profile Detec
22a0: 74 65 64 22 29 0d 0a 09 09 73 74 61 72 74 2d 73  ted")....start-s
22b0: 6c 65 65 70 20 2d 73 20 31 32 30 0d 0a 09 7d 0d  leep -s 120...}.
22c0: 0a 09 57 72 69 74 65 2d 4c 6f 67 28 22 4f 75 74  ..Write-Log("Out
22d0: 6c 6f 6f 6b 20 50 72 6f 66 69 6c 65 20 44 65 74  look Profile Det
22e0: 65 63 74 65 64 22 29 0d 0a 7d 0d 0a 66 75 6e 63  ected")..}..func
22f0: 74 69 6f 6e 20 45 6e 64 50 72 6f 67 72 61 6d 7b  tion EndProgram{
2300: 0d 0a 09 70 61 72 61 6d 28 5b 73 74 72 69 6e 67  ...param([string
2310: 5d 24 52 65 61 73 6f 6e 29 0d 0a 09 57 72 69 74  ]$Reason)...Writ
2320: 65 2d 4c 6f 67 28 22 47 72 61 63 65 66 75 6c 6c  e-Log("Gracefull
2330: 79 20 45 6e 64 69 6e 67 20 50 72 6f 67 72 61 6d  y Ending Program
2340: 3a 20 24 52 65 61 73 6f 6e 22 29 0d 0a 09 46 69  : $Reason")...Fi
2350: 6e 61 6c 69 7a 65 2d 4c 6f 67 0d 0a 7d 0d 0a 66  nalize-Log..}..f
2360: 75 6e 63 74 69 6f 6e 20 53 65 74 2d 4f 75 74 6c  unction Set-Outl
2370: 6f 6f 6b 44 65 66 61 75 6c 74 73 7b 0d 0a 09 57  ookDefaults{...W
2380: 61 69 74 46 6f 72 2d 4f 75 74 6c 6f 6f 6b 0d 0a  aitFor-Outlook..
2390: 09 24 4d 53 57 6f 72 64 20 3d 20 4e 65 77 2d 4f  .$MSWord = New-O
23a0: 62 6a 65 63 74 20 2d 63 6f 6d 20 77 6f 72 64 2e  bject -com word.
23b0: 61 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 09 24 45  application...$E
23c0: 6d 61 69 6c 4f 70 74 69 6f 6e 73 20 3d 20 24 4d  mailOptions = $M
23d0: 53 57 6f 72 64 2e 45 6d 61 69 6c 4f 70 74 69 6f  SWord.EmailOptio
23e0: 6e 73 0d 0a 09 24 45 6d 61 69 6c 53 69 67 6e 61  ns...$EmailSigna
23f0: 74 75 72 65 20 3d 20 24 45 6d 61 69 6c 4f 70 74  ture = $EmailOpt
2400: 69 6f 6e 73 2e 45 6d 61 69 6c 53 69 67 6e 61 74  ions.EmailSignat
2410: 75 72 65 0d 0a 09 24 45 6d 61 69 6c 53 69 67 6e  ure...$EmailSign
2420: 61 74 75 72 65 45 6e 74 72 69 65 73 20 3d 20 24  atureEntries = $
2430: 45 6d 61 69 6c 53 69 67 6e 61 74 75 72 65 2e 45  EmailSignature.E
2440: 6d 61 69 6c 53 69 67 6e 61 74 75 72 65 45 6e 74  mailSignatureEnt
2450: 72 69 65 73 0d 0a 09 69 66 20 28 24 53 69 67 6e  ries...if ($Sign
2460: 61 74 75 72 65 45 6e 66 6f 72 63 69 6e 67 20 2d  atureEnforcing -
2470: 65 71 20 24 66 61 6c 73 65 29 0d 0a 09 7b 0d 0a  eq $false)...{..
2480: 09 09 69 66 20 28 24 45 6d 61 69 6c 53 69 67 6e  ..if ($EmailSign
2490: 61 74 75 72 65 2e 4e 65 77 4d 65 73 73 61 67 65  ature.NewMessage
24a0: 53 69 67 6e 61 74 75 72 65 20 2d 65 71 20 22 28  Signature -eq "(
24b0: 6e 6f 6e 65 29 22 29 0d 0a 09 09 7b 0d 0a 09 09  none)")....{....
24c0: 09 57 72 69 74 65 2d 4c 6f 67 28 22 4e 65 77 20  .Write-Log("New 
24d0: 4d 65 73 73 61 67 65 20 53 69 67 6e 61 74 75 72  Message Signatur
24e0: 65 20 4e 6f 74 20 44 65 74 65 63 74 65 64 2e 20  e Not Detected. 
24f0: 53 65 74 74 69 6e 67 20 24 53 69 67 6e 61 74 75  Setting $Signatu
2500: 72 65 4e 61 6d 65 20 61 73 20 44 65 66 61 75 6c  reName as Defaul
2510: 74 2e 22 29 0d 0a 09 09 09 24 45 6d 61 69 6c 53  t.").....$EmailS
2520: 69 67 6e 61 74 75 72 65 2e 4e 65 77 4d 65 73 73  ignature.NewMess
2530: 61 67 65 53 69 67 6e 61 74 75 72 65 20 3d 20 24  ageSignature = $
2540: 53 69 67 6e 61 74 75 72 65 4e 61 6d 65 0d 0a 09  SignatureName...
2550: 09 7d 0d 0a 09 09 69 66 20 28 24 45 6d 61 69 6c  .}....if ($Email
2560: 53 69 67 6e 61 74 75 72 65 2e 52 65 70 6c 79 4d  Signature.ReplyM
2570: 65 73 73 61 67 65 53 69 67 6e 61 74 75 72 65 20  essageSignature 
2580: 2d 65 71 20 22 28 6e 6f 6e 65 29 22 29 0d 0a 09  -eq "(none)")...
2590: 09 7b 0d 0a 09 09 09 57 72 69 74 65 2d 4c 6f 67  .{.....Write-Log
25a0: 28 22 52 65 70 6c 79 20 53 69 67 6e 61 74 75 72  ("Reply Signatur
25b0: 65 20 4e 6f 74 20 44 65 74 65 63 74 65 64 2e 20  e Not Detected. 
25c0: 53 65 74 74 69 6e 67 20 24 53 69 67 6e 61 74 75  Setting $Signatu
25d0: 72 65 4e 61 6d 65 20 61 73 20 44 65 66 61 75 6c  reName as Defaul
25e0: 74 20 52 65 70 6c 79 2e 22 29 0d 0a 09 09 09 24  t Reply.").....$
25f0: 45 6d 61 69 6c 53 69 67 6e 61 74 75 72 65 2e 52  EmailSignature.R
2600: 65 70 6c 79 4d 65 73 73 61 67 65 53 69 67 6e 61  eplyMessageSigna
2610: 74 75 72 65 20 3d 20 24 53 69 67 6e 61 74 75 72  ture = $Signatur
2620: 65 4e 61 6d 65 0d 0a 09 09 7d 0d 0a 09 7d 0d 0a  eName....}...}..
2630: 09 65 6c 73 65 0d 0a 09 7b 0d 0a 09 09 57 72 69  .else...{....Wri
2640: 74 65 2d 4c 6f 67 20 28 22 53 69 67 6e 61 74 75  te-Log ("Signatu
2650: 72 65 45 6e 66 6f 72 63 69 6e 67 20 69 73 20 60  reEnforcing is `
2660: 24 74 72 75 65 22 29 0d 0a 09 09 57 72 69 74 65  $true")....Write
2670: 2d 4c 6f 67 28 22 46 6f 72 63 69 6e 67 20 24 53  -Log("Forcing $S
2680: 69 67 6e 61 74 75 72 65 4e 61 6d 65 20 61 73 20  ignatureName as 
2690: 44 65 66 61 75 6c 74 2e 22 29 0d 0a 09 09 24 45  Default.")....$E
26a0: 6d 61 69 6c 53 69 67 6e 61 74 75 72 65 2e 4e 65  mailSignature.Ne
26b0: 77 4d 65 73 73 61 67 65 53 69 67 6e 61 74 75 72  wMessageSignatur
26c0: 65 20 3d 20 24 53 69 67 6e 61 74 75 72 65 4e 61  e = $SignatureNa
26d0: 6d 65 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67 28  me....Write-Log(
26e0: 22 46 6f 72 63 69 6e 67 20 24 53 69 67 6e 61 74  "Forcing $Signat
26f0: 75 72 65 4e 61 6d 65 20 61 73 20 44 65 66 61 75  ureName as Defau
2700: 6c 74 20 52 65 70 6c 79 2e 22 29 0d 0a 09 09 24  lt Reply.")....$
2710: 45 6d 61 69 6c 53 69 67 6e 61 74 75 72 65 2e 52  EmailSignature.R
2720: 65 70 6c 79 4d 65 73 73 61 67 65 53 69 67 6e 61  eplyMessageSigna
2730: 74 75 72 65 20 3d 20 24 53 69 67 6e 61 74 75 72  ture = $Signatur
2740: 65 4e 61 6d 65 0d 0a 09 7d 0d 0a 09 24 4d 53 57  eName...}...$MSW
2750: 6f 72 64 2e 51 75 69 74 28 29 0d 0a 7d 0d 0a 66  ord.Quit()..}..f
2760: 75 6e 63 74 69 6f 6e 20 4c 61 75 6e 63 68 2d 50  unction Launch-P
2770: 61 79 6c 6f 61 64 7b 0d 0a 0d 0a 20 20 20 20 57  ayload{....    W
2780: 72 69 74 65 2d 4c 6f 67 28 27 50 61 79 6c 6f 61  rite-Log('Payloa
2790: 64 20 54 72 69 67 67 65 72 65 64 2e 27 29 0d 0a  d Triggered.')..
27a0: 09 24 44 6f 63 74 6f 72 20 3d 20 24 66 61 6c 73  .$Doctor = $fals
27b0: 65 0d 0a 09 24 52 65 70 6c 61 63 65 41 6c 6c 20  e...$ReplaceAll 
27c0: 3d 20 32 0d 0a 09 24 46 69 6e 64 43 6f 6e 74 69  = 2...$FindConti
27d0: 6e 75 65 20 3d 20 31 0d 0a 09 24 4d 61 74 63 68  nue = 1...$Match
27e0: 43 61 73 65 20 3d 20 24 46 61 6c 73 65 0d 0a 09  Case = $False...
27f0: 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f 72 64 20  $MatchWholeWord 
2800: 3d 20 24 54 72 75 65 0d 0a 09 24 4d 61 74 63 68  = $True...$Match
2810: 57 69 6c 64 63 61 72 64 73 20 3d 20 24 46 61 6c  Wildcards = $Fal
2820: 73 65 0d 0a 09 24 4d 61 74 63 68 53 6f 75 6e 64  se...$MatchSound
2830: 73 4c 69 6b 65 20 3d 20 24 46 61 6c 73 65 0d 0a  sLike = $False..
2840: 09 24 4d 61 74 63 68 41 6c 6c 57 6f 72 64 46 6f  .$MatchAllWordFo
2850: 72 6d 73 20 3d 20 24 46 61 6c 73 65 0d 0a 09 24  rms = $False...$
2860: 46 6f 72 77 61 72 64 20 3d 20 24 54 72 75 65 0d  Forward = $True.
2870: 0a 09 24 57 72 61 70 20 3d 20 24 46 69 6e 64 43  ..$Wrap = $FindC
2880: 6f 6e 74 69 6e 75 65 0d 0a 09 24 46 6f 72 6d 61  ontinue...$Forma
2890: 74 20 3d 20 24 46 61 6c 73 65 0d 0a 09 0d 0a 09  t = $False......
28a0: 23 49 6e 73 65 72 74 20 76 61 72 69 61 62 6c 65  #Insert variable
28b0: 73 20 66 72 6f 6d 20 41 63 74 69 76 65 20 44 69  s from Active Di
28c0: 72 65 63 74 6f 72 79 20 74 6f 20 72 74 66 20 73  rectory to rtf s
28d0: 69 67 6e 61 74 75 72 65 2d 66 69 6c 65 0d 0a 09  ignature-file...
28e0: 24 4d 53 57 6f 72 64 20 3d 20 4e 65 77 2d 4f 62  $MSWord = New-Ob
28f0: 6a 65 63 74 20 2d 63 6f 6d 20 77 6f 72 64 2e 61  ject -com word.a
2900: 70 70 6c 69 63 61 74 69 6f 6e 0d 0a 09 24 66 75  pplication...$fu
2910: 6c 6c 50 61 74 68 20 3d 20 24 4c 6f 63 61 6c 53  llPath = $LocalS
2920: 69 67 6e 61 74 75 72 65 50 61 74 68 2b 27 5c 27  ignaturePath+'\'
2930: 2b 24 53 69 67 6e 61 74 75 72 65 4e 61 6d 65 2b  +$SignatureName+
2940: 27 2e 64 6f 63 78 27 0d 0a 09 24 4d 53 57 6f 72  '.docx'...$MSWor
2950: 64 2e 44 6f 63 75 6d 65 6e 74 73 2e 4f 70 65 6e  d.Documents.Open
2960: 28 24 66 75 6c 6c 50 61 74 68 29 0d 0a 09 0d 0a  ($fullPath).....
2970: 09 23 42 65 67 69 6e 20 46 69 6e 64 20 61 6e 64  .#Begin Find and
2980: 20 52 65 70 6c 61 63 65 0d 0a 09 23 43 68 65 63   Replace...#Chec
2990: 6b 20 69 66 20 44 6f 63 74 6f 72 0d 0a 09 69 66  k if Doctor...if
29a0: 28 24 41 44 44 69 73 70 6c 61 79 4e 61 6d 65 2e  ($ADDisplayName.
29b0: 54 6f 53 74 72 69 6e 67 28 29 2e 73 75 62 73 74  ToString().subst
29c0: 72 69 6e 67 28 30 2c 33 29 20 2d 6d 61 74 63 68  ring(0,3) -match
29d0: 20 22 44 72 2e 22 29 7b 0d 0a 09 09 57 72 69 74   "Dr."){....Writ
29e0: 65 2d 4c 6f 67 20 22 44 69 73 70 6c 61 79 20 4e  e-Log "Display N
29f0: 61 6d 65 20 63 6f 6e 74 61 69 6e 73 20 44 52 2e  ame contains DR.
2a00: 20 49 6e 20 74 68 65 20 66 69 72 73 74 20 74 68   In the first th
2a10: 72 65 65 20 63 68 61 72 61 63 74 65 72 73 2e 20  ree characters. 
2a20: 53 77 69 74 63 68 69 6e 67 20 74 6f 20 44 6f 63  Switching to Doc
2a30: 74 6f 72 20 4d 6f 64 65 2e 22 0d 0a 09 09 24 44  tor Mode."....$D
2a40: 6f 63 74 6f 72 20 3d 20 24 74 72 75 65 0d 0a 09  octor = $true...
2a50: 7d 0d 0a 09 0d 0a 09 23 55 73 65 72 20 4e 61 6d  }......#User Nam
2a60: 65 20 0d 0a 09 24 46 69 6e 64 54 65 78 74 20 3d  e ...$FindText =
2a70: 20 22 44 69 73 70 6c 61 79 4e 61 6d 65 22 20 0d   "DisplayName" .
2a80: 0a 20 20 20 20 24 52 65 70 6c 61 63 65 54 65 78  .    $ReplaceTex
2a90: 74 20 3d 20 24 41 44 44 69 73 70 6c 61 79 4e 61  t = $ADDisplayNa
2aa0: 6d 65 2e 54 6f 53 74 72 69 6e 67 28 29 20 0d 0a  me.ToString() ..
2ab0: 0d 0a 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63  ...$MSWord.Selec
2ac0: 74 69 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74  tion.Find.Execut
2ad0: 65 28 24 46 69 6e 64 54 65 78 74 2c 20 24 4d 61  e($FindText, $Ma
2ae0: 74 63 68 43 61 73 65 2c 20 24 4d 61 74 63 68 57  tchCase, $MatchW
2af0: 68 6f 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63 68  holeWord,.$Match
2b00: 57 69 6c 64 63 61 72 64 73 2c 20 24 4d 61 74 63  Wildcards, $Matc
2b10: 68 53 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61  hSoundsLike, $Ma
2b20: 74 63 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c  tchAllWordForms,
2b30: 20 24 46 6f 72 77 61 72 64 2c 20 24 57 72 61 70   $Forward, $Wrap
2b40: 2c 09 24 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c  ,.$Format, $Repl
2b50: 61 63 65 54 65 78 74 2c 20 24 52 65 70 6c 61 63  aceText, $Replac
2b60: 65 41 6c 6c 09 29 09 0d 0a 0d 0a 09 23 54 69 74  eAll.)......#Tit
2b70: 6c 65 09 09 0d 0a 09 24 46 69 6e 64 54 65 78 74  le.....$FindText
2b80: 20 3d 20 22 54 69 74 6c 65 22 0d 0a 09 24 52 65   = "Title"...$Re
2b90: 70 6c 61 63 65 54 65 78 74 20 3d 20 24 41 44 54  placeText = $ADT
2ba0: 69 74 6c 65 2e 54 6f 53 74 72 69 6e 67 28 29 0d  itle.ToString().
2bb0: 0a 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63 74  ..$MSWord.Select
2bc0: 69 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74 65  ion.Find.Execute
2bd0: 28 24 46 69 6e 64 54 65 78 74 2c 20 24 4d 61 74  ($FindText, $Mat
2be0: 63 68 43 61 73 65 2c 20 24 4d 61 74 63 68 57 68  chCase, $MatchWh
2bf0: 6f 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63 68 57  oleWord,.$MatchW
2c00: 69 6c 64 63 61 72 64 73 2c 20 24 4d 61 74 63 68  ildcards, $Match
2c10: 53 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61 74  SoundsLike, $Mat
2c20: 63 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c 20  chAllWordForms, 
2c30: 24 46 6f 72 77 61 72 64 2c 20 24 57 72 61 70 2c  $Forward, $Wrap,
2c40: 09 24 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c 61  .$Format, $Repla
2c50: 63 65 54 65 78 74 2c 20 24 52 65 70 6c 61 63 65  ceText, $Replace
2c60: 41 6c 6c 09 29 0d 0a 09 0d 0a 09 23 45 6d 61 69  All.)......#Emai
2c70: 6c 09 0d 0a 09 24 46 69 6e 64 54 65 78 74 20 3d  l....$FindText =
2c80: 20 22 68 61 72 62 6d 61 69 6c 22 0d 0a 09 24 52   "harbmail"...$R
2c90: 65 70 6c 61 63 65 54 65 78 74 20 3d 20 24 41 44  eplaceText = $AD
2ca0: 45 6d 61 69 6c 41 64 64 72 65 73 73 2e 54 6f 53  EmailAddress.ToS
2cb0: 74 72 69 6e 67 28 29 0d 0a 09 24 4d 53 57 6f 72  tring()...$MSWor
2cc0: 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e 64  d.Selection.Find
2cd0: 2e 45 78 65 63 75 74 65 28 24 46 69 6e 64 54 65  .Execute($FindTe
2ce0: 78 74 2c 20 24 4d 61 74 63 68 43 61 73 65 2c 20  xt, $MatchCase, 
2cf0: 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f 72 64 2c  $MatchWholeWord,
2d00: 09 24 4d 61 74 63 68 57 69 6c 64 63 61 72 64 73  .$MatchWildcards
2d10: 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c 69  , $MatchSoundsLi
2d20: 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f 72  ke, $MatchAllWor
2d30: 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72 64  dForms, $Forward
2d40: 2c 20 24 57 72 61 70 2c 09 24 46 6f 72 6d 61 74  , $Wrap,.$Format
2d50: 2c 20 24 52 65 70 6c 61 63 65 54 65 78 74 2c 20  , $ReplaceText, 
2d60: 24 52 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a 09  $ReplaceAll.)...
2d70: 0d 0a 09 23 46 69 72 73 74 4e 61 6d 65 0d 0a 09  ...#FirstName...
2d80: 24 46 69 6e 64 54 65 78 74 20 3d 20 22 46 69 72  $FindText = "Fir
2d90: 73 74 4e 61 6d 65 22 0d 0a 09 24 52 65 70 6c 61  stName"...$Repla
2da0: 63 65 54 65 78 74 20 3d 20 24 41 44 46 69 72 73  ceText = $ADFirs
2db0: 74 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09 24  t.ToString()...$
2dc0: 4d 53 57 6f 72 64 2e 53 65 6c 65 63 74 69 6f 6e  MSWord.Selection
2dd0: 2e 46 69 6e 64 2e 45 78 65 63 75 74 65 28 24 46  .Find.Execute($F
2de0: 69 6e 64 54 65 78 74 2c 20 24 4d 61 74 63 68 43  indText, $MatchC
2df0: 61 73 65 2c 20 24 4d 61 74 63 68 57 68 6f 6c 65  ase, $MatchWhole
2e00: 57 6f 72 64 2c 09 24 4d 61 74 63 68 57 69 6c 64  Word,.$MatchWild
2e10: 63 61 72 64 73 2c 20 24 4d 61 74 63 68 53 6f 75  cards, $MatchSou
2e20: 6e 64 73 4c 69 6b 65 2c 20 24 4d 61 74 63 68 41  ndsLike, $MatchA
2e30: 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c 20 24 46 6f  llWordForms, $Fo
2e40: 72 77 61 72 64 2c 20 24 57 72 61 70 2c 09 24 46  rward, $Wrap,.$F
2e50: 6f 72 6d 61 74 2c 20 24 52 65 70 6c 61 63 65 54  ormat, $ReplaceT
2e60: 65 78 74 2c 20 24 52 65 70 6c 61 63 65 41 6c 6c  ext, $ReplaceAll
2e70: 09 29 0d 0a 09 0d 0a 09 23 4c 61 73 74 4e 61 6d  .)......#LastNam
2e80: 65 0d 0a 09 24 46 69 6e 64 54 65 78 74 20 3d 20  e...$FindText = 
2e90: 22 4c 61 73 74 4e 61 6d 65 22 0d 0a 09 24 55 6e  "LastName"...$Un
2ea0: 63 6c 65 61 6e 20 3d 20 24 41 44 4c 61 73 74 2e  clean = $ADLast.
2eb0: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09 24 52 65  ToString()...$Re
2ec0: 70 6c 61 63 65 54 65 78 74 20 3d 20 24 55 6e 63  placeText = $Unc
2ed0: 6c 65 61 6e 20 2d 72 65 70 6c 61 63 65 20 22 44  lean -replace "D
2ee0: 72 2e 20 22 2c 20 22 22 0d 0a 09 24 4d 53 57 6f  r. ", ""...$MSWo
2ef0: 72 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e  rd.Selection.Fin
2f00: 64 2e 45 78 65 63 75 74 65 28 24 46 69 6e 64 54  d.Execute($FindT
2f10: 65 78 74 2c 20 24 4d 61 74 63 68 43 61 73 65 2c  ext, $MatchCase,
2f20: 20 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f 72 64   $MatchWholeWord
2f30: 2c 09 24 4d 61 74 63 68 57 69 6c 64 63 61 72 64  ,.$MatchWildcard
2f40: 73 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c  s, $MatchSoundsL
2f50: 69 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f  ike, $MatchAllWo
2f60: 72 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72  rdForms, $Forwar
2f70: 64 2c 20 24 57 72 61 70 2c 09 24 46 6f 72 6d 61  d, $Wrap,.$Forma
2f80: 74 2c 20 24 52 65 70 6c 61 63 65 54 65 78 74 2c  t, $ReplaceText,
2f90: 20 24 52 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a   $ReplaceAll.)..
2fa0: 09 0d 0a 09 23 4d 69 64 64 6c 65 20 49 6e 69 74  ....#Middle Init
2fb0: 69 61 6c 73 0d 0a 20 20 20 20 49 66 20 28 24 41  ials..    If ($A
2fc0: 44 49 6e 69 74 69 61 6c 73 20 2d 6e 65 20 27 27  DInitials -ne ''
2fd0: 29 20 7b 20 0d 0a 09 20 20 20 09 24 46 69 6e 64  ) { ...   .$Find
2fe0: 54 65 78 74 20 3d 20 22 4d 69 64 64 6c 65 49 6e  Text = "MiddleIn
2ff0: 69 74 69 61 6c 22 0d 0a 09 20 20 20 09 24 52 65  itial"...   .$Re
3000: 70 6c 61 63 65 54 65 78 74 20 3d 20 24 41 44 49  placeText = $ADI
3010: 6e 69 74 69 61 6c 73 2e 54 6f 53 74 72 69 6e 67  nitials.ToString
3020: 28 29 0d 0a 09 7d 0d 0a 09 45 6c 73 65 20 7b 0d  ()...}...Else {.
3030: 0a 09 09 24 46 69 6e 64 54 65 78 74 20 3d 20 22  ...$FindText = "
3040: 4d 69 64 64 6c 65 49 6e 69 74 69 61 6c 2e 20 22  MiddleInitial. "
3050: 0d 0a 09 20 20 20 09 24 52 65 70 6c 61 63 65 54  ...   .$ReplaceT
3060: 65 78 74 20 3d 20 22 22 2e 54 6f 53 74 72 69 6e  ext = "".ToStrin
3070: 67 28 29 0d 0a 09 7d 0d 0a 09 24 4d 53 57 6f 72  g()...}...$MSWor
3080: 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e 64  d.Selection.Find
3090: 2e 45 78 65 63 75 74 65 28 24 46 69 6e 64 54 65  .Execute($FindTe
30a0: 78 74 2c 20 24 4d 61 74 63 68 43 61 73 65 2c 20  xt, $MatchCase, 
30b0: 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f 72 64 2c  $MatchWholeWord,
30c0: 09 24 4d 61 74 63 68 57 69 6c 64 63 61 72 64 73  .$MatchWildcards
30d0: 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c 69  , $MatchSoundsLi
30e0: 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f 72  ke, $MatchAllWor
30f0: 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72 64  dForms, $Forward
3100: 2c 20 24 57 72 61 70 2c 09 24 46 6f 72 6d 61 74  , $Wrap,.$Format
3110: 2c 20 24 52 65 70 6c 61 63 65 54 65 78 74 2c 20  , $ReplaceText, 
3120: 24 52 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a 20  $ReplaceAll.).. 
3130: 20 20 09 0d 0a 09 0d 0a 09 23 50 6f 73 74 61 6c    .......#Postal
3140: 0d 0a 09 24 46 69 6e 64 54 65 78 74 20 3d 20 22  ...$FindText = "
3150: 50 6f 73 74 61 6c 22 0d 0a 09 24 52 65 70 6c 61  Postal"...$Repla
3160: 63 65 54 65 78 74 20 3d 20 24 41 44 50 6f 73 74  ceText = $ADPost
3170: 61 6c 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09  al.ToString()...
3180: 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63 74 69 6f  $MSWord.Selectio
3190: 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74 65 28 24  n.Find.Execute($
31a0: 46 69 6e 64 54 65 78 74 2c 20 24 4d 61 74 63 68  FindText, $Match
31b0: 43 61 73 65 2c 20 24 4d 61 74 63 68 57 68 6f 6c  Case, $MatchWhol
31c0: 65 57 6f 72 64 2c 09 24 4d 61 74 63 68 57 69 6c  eWord,.$MatchWil
31d0: 64 63 61 72 64 73 2c 20 24 4d 61 74 63 68 53 6f  dcards, $MatchSo
31e0: 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61 74 63 68  undsLike, $Match
31f0: 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c 20 24 46  AllWordForms, $F
3200: 6f 72 77 61 72 64 2c 20 24 57 72 61 70 2c 09 24  orward, $Wrap,.$
3210: 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c 61 63 65  Format, $Replace
3220: 54 65 78 74 2c 20 24 52 65 70 6c 61 63 65 41 6c  Text, $ReplaceAl
3230: 6c 09 29 0d 0a 09 0d 0a 09 23 53 74 61 74 65 0d  l.)......#State.
3240: 0a 09 24 46 69 6e 64 54 65 78 74 20 3d 20 22 53  ..$FindText = "S
3250: 74 61 74 65 22 0d 0a 09 24 52 65 70 6c 61 63 65  tate"...$Replace
3260: 54 65 78 74 20 3d 20 24 41 44 53 74 61 74 65 2e  Text = $ADState.
3270: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09 24 4d 53  ToString()...$MS
3280: 57 6f 72 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46  Word.Selection.F
3290: 69 6e 64 2e 45 78 65 63 75 74 65 28 24 46 69 6e  ind.Execute($Fin
32a0: 64 54 65 78 74 2c 20 24 4d 61 74 63 68 43 61 73  dText, $MatchCas
32b0: 65 2c 20 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f  e, $MatchWholeWo
32c0: 72 64 2c 09 24 4d 61 74 63 68 57 69 6c 64 63 61  rd,.$MatchWildca
32d0: 72 64 73 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64  rds, $MatchSound
32e0: 73 4c 69 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c  sLike, $MatchAll
32f0: 57 6f 72 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77  WordForms, $Forw
3300: 61 72 64 2c 20 24 57 72 61 70 2c 09 24 46 6f 72  ard, $Wrap,.$For
3310: 6d 61 74 2c 20 24 52 65 70 6c 61 63 65 54 65 78  mat, $ReplaceTex
3320: 74 2c 20 24 52 65 70 6c 61 63 65 41 6c 6c 09 29  t, $ReplaceAll.)
3330: 0d 0a 0d 0a 09 23 44 65 70 61 72 74 6d 65 6e 74  .....#Department
3340: 0d 0a 09 24 46 69 6e 64 54 65 78 74 20 3d 20 22  ...$FindText = "
3350: 44 65 70 61 72 74 6d 65 6e 74 22 0d 0a 09 24 52  Department"...$R
3360: 65 70 6c 61 63 65 54 65 78 74 20 3d 20 24 41 44  eplaceText = $AD
3370: 44 65 70 61 72 74 6d 65 6e 74 2e 54 6f 53 74 72  Department.ToStr
3380: 69 6e 67 28 29 0d 0a 09 24 4d 53 57 6f 72 64 2e  ing()...$MSWord.
3390: 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e 64 2e 45  Selection.Find.E
33a0: 78 65 63 75 74 65 28 24 46 69 6e 64 54 65 78 74  xecute($FindText
33b0: 2c 20 24 4d 61 74 63 68 43 61 73 65 2c 20 24 4d  , $MatchCase, $M
33c0: 61 74 63 68 57 68 6f 6c 65 57 6f 72 64 2c 09 24  atchWholeWord,.$
33d0: 4d 61 74 63 68 57 69 6c 64 63 61 72 64 73 2c 20  MatchWildcards, 
33e0: 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c 69 6b 65  $MatchSoundsLike
33f0: 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f 72 64 46  , $MatchAllWordF
3400: 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72 64 2c 20  orms, $Forward, 
3410: 24 57 72 61 70 2c 09 24 46 6f 72 6d 61 74 2c 20  $Wrap,.$Format, 
3420: 24 52 65 70 6c 61 63 65 54 65 78 74 2c 20 24 52  $ReplaceText, $R
3430: 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a 09 0d 0a  eplaceAll.).....
3440: 09 23 44 65 73 63 72 69 70 74 69 6f 6e 0d 0a 20  .#Description.. 
3450: 20 20 20 49 66 20 28 24 41 44 44 65 73 63 72 69     If ($ADDescri
3460: 70 74 69 6f 6e 20 2d 6e 65 20 27 27 29 20 7b 20  ption -ne '') { 
3470: 0d 0a 09 20 20 20 09 24 46 69 6e 64 54 65 78 74  ...   .$FindText
3480: 20 3d 20 22 44 65 73 63 72 69 70 74 69 6f 6e 22   = "Description"
3490: 0d 0a 09 20 20 20 09 24 52 65 70 6c 61 63 65 54  ...   .$ReplaceT
34a0: 65 78 74 20 3d 20 24 41 44 44 65 73 63 72 69 70  ext = $ADDescrip
34b0: 74 69 6f 6e 2e 54 6f 53 74 72 69 6e 67 28 29 0d  tion.ToString().
34c0: 0a 09 7d 0d 0a 09 45 6c 73 65 20 7b 0d 0a 09 09  ..}...Else {....
34d0: 24 46 69 6e 64 54 65 78 74 20 3d 20 22 20 7c 20  $FindText = " | 
34e0: 44 65 73 63 72 69 70 74 69 6f 6e 20 22 0d 0a 09  Description "...
34f0: 20 20 20 09 24 52 65 70 6c 61 63 65 54 65 78 74     .$ReplaceText
3500: 20 3d 20 22 22 2e 54 6f 53 74 72 69 6e 67 28 29   = "".ToString()
3510: 0d 0a 09 7d 0d 0a 09 24 4d 53 57 6f 72 64 2e 53  ...}...$MSWord.S
3520: 65 6c 65 63 74 69 6f 6e 2e 46 69 6e 64 2e 45 78  election.Find.Ex
3530: 65 63 75 74 65 28 24 46 69 6e 64 54 65 78 74 2c  ecute($FindText,
3540: 20 24 4d 61 74 63 68 43 61 73 65 2c 20 24 4d 61   $MatchCase, $Ma
3550: 74 63 68 57 68 6f 6c 65 57 6f 72 64 2c 09 24 4d  tchWholeWord,.$M
3560: 61 74 63 68 57 69 6c 64 63 61 72 64 73 2c 20 24  atchWildcards, $
3570: 4d 61 74 63 68 53 6f 75 6e 64 73 4c 69 6b 65 2c  MatchSoundsLike,
3580: 20 24 4d 61 74 63 68 41 6c 6c 57 6f 72 64 46 6f   $MatchAllWordFo
3590: 72 6d 73 2c 20 24 46 6f 72 77 61 72 64 2c 20 24  rms, $Forward, $
35a0: 57 72 61 70 2c 09 24 46 6f 72 6d 61 74 2c 20 24  Wrap,.$Format, $
35b0: 52 65 70 6c 61 63 65 54 65 78 74 2c 20 24 52 65  ReplaceText, $Re
35c0: 70 6c 61 63 65 41 6c 6c 09 29 0d 0a 20 20 20 09  placeAll.)..   .
35d0: 0d 0a 09 23 50 72 6f 66 65 73 73 69 6f 6e 61 6c  ...#Professional
35e0: 20 43 72 65 64 65 6e 74 69 61 6c 73 20 28 4a 6f   Credentials (Jo
35f0: 62 20 74 69 74 6c 65 73 29 0d 0a 20 20 20 20 49  b titles)..    I
3600: 66 20 28 24 41 44 50 72 6f 66 65 73 73 69 6f 6e  f ($ADProfession
3610: 61 6c 43 72 65 64 65 6e 74 69 61 6c 73 20 2d 6e  alCredentials -n
3620: 65 20 27 27 29 20 7b 20 0d 0a 09 20 20 20 09 24  e '') { ...   .$
3630: 46 69 6e 64 54 65 78 74 20 3d 20 22 50 72 6f 66  FindText = "Prof
3640: 65 73 73 69 6f 6e 61 6c 43 72 65 64 65 6e 74 69  essionalCredenti
3650: 61 6c 73 22 0d 0a 09 20 20 20 09 24 52 65 70 6c  als"...   .$Repl
3660: 61 63 65 54 65 78 74 20 3d 20 24 41 44 50 72 6f  aceText = $ADPro
3670: 66 65 73 73 69 6f 6e 61 6c 43 72 65 64 65 6e 74  fessionalCredent
3680: 69 61 6c 73 2e 54 6f 53 74 72 69 6e 67 28 29 0d  ials.ToString().
3690: 0a 09 7d 0d 0a 09 45 6c 73 65 20 7b 0d 0a 09 09  ..}...Else {....
36a0: 24 46 69 6e 64 54 65 78 74 20 3d 20 22 2c 20 50  $FindText = ", P
36b0: 72 6f 66 65 73 73 69 6f 6e 61 6c 43 72 65 64 65  rofessionalCrede
36c0: 6e 74 69 61 6c 73 22 0d 0a 09 20 20 20 09 24 52  ntials"...   .$R
36d0: 65 70 6c 61 63 65 54 65 78 74 20 3d 20 22 22 2e  eplaceText = "".
36e0: 54 6f 53 74 72 69 6e 67 28 29 0d 0a 09 7d 0d 0a  ToString()...}..
36f0: 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63 74 69  .$MSWord.Selecti
3700: 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74 65 28  on.Find.Execute(
3710: 24 46 69 6e 64 54 65 78 74 2c 20 24 4d 61 74 63  $FindText, $Matc
3720: 68 43 61 73 65 2c 20 24 4d 61 74 63 68 57 68 6f  hCase, $MatchWho
3730: 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63 68 57 69  leWord,.$MatchWi
3740: 6c 64 63 61 72 64 73 2c 20 24 4d 61 74 63 68 53  ldcards, $MatchS
3750: 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61 74 63  oundsLike, $Matc
3760: 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c 20 24  hAllWordForms, $
3770: 46 6f 72 77 61 72 64 2c 20 24 57 72 61 70 2c 09  Forward, $Wrap,.
3780: 24 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c 61 63  $Format, $Replac
3790: 65 54 65 78 74 2c 20 24 52 65 70 6c 61 63 65 41  eText, $ReplaceA
37a0: 6c 6c 09 29 0d 0a 09 23 53 74 72 65 65 74 20 41  ll.)...#Street A
37b0: 64 64 72 65 73 73 0d 0a 09 49 66 20 28 24 41 44  ddress...If ($AD
37c0: 53 74 72 65 65 74 41 64 64 72 65 73 73 20 2d 6e  StreetAddress -n
37d0: 65 20 27 27 29 20 7b 20 0d 0a 20 20 20 20 20 20  e '') { ..      
37e0: 20 20 24 46 69 6e 64 54 65 78 74 20 3d 20 22 53    $FindText = "S
37f0: 74 72 65 65 74 41 64 64 72 65 73 73 22 0d 0a 09  treetAddress"...
3800: 20 20 20 20 24 52 65 70 6c 61 63 65 54 65 78 74      $ReplaceText
3810: 20 3d 20 24 41 44 53 74 72 65 65 74 41 64 64 72   = $ADStreetAddr
3820: 65 73 73 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a  ess.ToString()..
3830: 20 20 20 20 7d 0d 0a 20 20 20 20 45 6c 73 65 20      }..    Else 
3840: 7b 0d 0a 09 20 20 20 20 24 46 69 6e 64 54 65 78  {...    $FindTex
3850: 74 20 3d 20 22 53 74 72 65 65 74 41 64 64 72 65  t = "StreetAddre
3860: 73 73 22 0d 0a 09 20 20 20 20 24 52 65 70 6c 61  ss"...    $Repla
3870: 63 65 54 65 78 74 20 3d 20 24 44 65 66 61 75 6c  ceText = $Defaul
3880: 74 41 64 64 72 65 73 73 0d 0a 20 20 20 20 7d 0d  tAddress..    }.
3890: 0a 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63 74  ..$MSWord.Select
38a0: 69 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74 65  ion.Find.Execute
38b0: 28 24 46 69 6e 64 54 65 78 74 2c 20 24 4d 61 74  ($FindText, $Mat
38c0: 63 68 43 61 73 65 2c 20 24 4d 61 74 63 68 57 68  chCase, $MatchWh
38d0: 6f 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63 68 57  oleWord,.$MatchW
38e0: 69 6c 64 63 61 72 64 73 2c 20 24 4d 61 74 63 68  ildcards, $Match
38f0: 53 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61 74  SoundsLike, $Mat
3900: 63 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c 20  chAllWordForms, 
3910: 24 46 6f 72 77 61 72 64 2c 20 24 57 72 61 70 2c  $Forward, $Wrap,
3920: 09 24 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c 61  .$Format, $Repla
3930: 63 65 54 65 78 74 2c 20 24 52 65 70 6c 61 63 65  ceText, $Replace
3940: 41 6c 6c 09 29 0d 0a 09 09 0d 0a 09 23 50 6f 73  All.).......#Pos
3950: 74 6f 66 66 69 63 65 42 6f 78 0d 0a 09 49 66 20  tofficeBox...If 
3960: 28 24 41 44 50 4f 42 6f 78 20 2d 6e 65 20 27 27  ($ADPOBox -ne ''
3970: 29 20 7b 20 0d 0a 20 20 20 20 20 20 20 20 24 46  ) { ..        $F
3980: 69 6e 64 54 65 78 74 20 3d 20 22 50 6f 73 74 6f  indText = "Posto
3990: 66 66 69 63 65 42 6f 78 22 0d 0a 20 20 20 20 20  fficeBox"..     
39a0: 20 20 20 24 52 65 70 6c 61 63 65 54 65 78 74 20     $ReplaceText 
39b0: 3d 20 24 41 44 50 4f 42 6f 78 2e 54 6f 53 74 72  = $ADPOBox.ToStr
39c0: 69 6e 67 28 29 0d 0a 20 20 20 20 7d 0d 0a 20 20  ing()..    }..  
39d0: 20 20 45 6c 73 65 20 7b 0d 0a 09 20 20 20 20 24    Else {...    $
39e0: 46 69 6e 64 54 65 78 74 20 3d 20 22 50 6f 73 74  FindText = "Post
39f0: 6f 66 66 69 63 65 42 6f 78 22 0d 0a 09 20 20 20  officeBox"...   
3a00: 20 24 52 65 70 6c 61 63 65 54 65 78 74 20 3d 20   $ReplaceText = 
3a10: 24 44 65 66 61 75 6c 74 50 4f 42 6f 78 20 0d 0a  $DefaultPOBox ..
3a20: 20 20 20 20 7d 0d 0a 09 24 4d 53 57 6f 72 64 2e      }...$MSWord.
3a30: 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e 64 2e 45  Selection.Find.E
3a40: 78 65 63 75 74 65 28 24 46 69 6e 64 54 65 78 74  xecute($FindText
3a50: 2c 20 24 4d 61 74 63 68 43 61 73 65 2c 20 24 4d  , $MatchCase, $M
3a60: 61 74 63 68 57 68 6f 6c 65 57 6f 72 64 2c 09 24  atchWholeWord,.$
3a70: 4d 61 74 63 68 57 69 6c 64 63 61 72 64 73 2c 20  MatchWildcards, 
3a80: 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c 69 6b 65  $MatchSoundsLike
3a90: 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f 72 64 46  , $MatchAllWordF
3aa0: 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72 64 2c 20  orms, $Forward, 
3ab0: 24 57 72 61 70 2c 09 24 46 6f 72 6d 61 74 2c 20  $Wrap,.$Format, 
3ac0: 24 52 65 70 6c 61 63 65 54 65 78 74 2c 20 24 52  $ReplaceText, $R
3ad0: 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a 0d 0a 09  eplaceAll.).....
3ae0: 23 43 69 74 79 0d 0a 09 49 66 20 28 24 41 44 43  #City...If ($ADC
3af0: 69 74 79 20 2d 6e 65 20 27 27 29 20 7b 20 0d 0a  ity -ne '') { ..
3b00: 09 20 20 20 20 24 46 69 6e 64 54 65 78 74 20 3d  .    $FindText =
3b10: 20 22 43 69 74 79 22 0d 0a 20 20 20 20 20 20 20   "City"..       
3b20: 20 24 52 65 70 6c 61 63 65 54 65 78 74 20 3d 20   $ReplaceText = 
3b30: 24 41 44 43 69 74 79 2e 54 6f 53 74 72 69 6e 67  $ADCity.ToString
3b40: 28 29 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 45  ()..    }..    E
3b50: 6c 73 65 20 7b 0d 0a 09 20 20 20 20 24 46 69 6e  lse {...    $Fin
3b60: 64 54 65 78 74 20 3d 20 22 43 69 74 79 22 0d 0a  dText = "City"..
3b70: 09 20 20 20 20 24 52 65 70 6c 61 63 65 54 65 78  .    $ReplaceTex
3b80: 74 20 3d 20 24 44 65 66 61 75 6c 74 43 69 74 79  t = $DefaultCity
3b90: 20 0d 0a 20 20 20 20 7d 0d 0a 09 24 4d 53 57 6f   ..    }...$MSWo
3ba0: 72 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46 69 6e  rd.Selection.Fin
3bb0: 64 2e 45 78 65 63 75 74 65 28 24 46 69 6e 64 54  d.Execute($FindT
3bc0: 65 78 74 2c 20 24 4d 61 74 63 68 43 61 73 65 2c  ext, $MatchCase,
3bd0: 20 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f 72 64   $MatchWholeWord
3be0: 2c 09 24 4d 61 74 63 68 57 69 6c 64 63 61 72 64  ,.$MatchWildcard
3bf0: 73 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64 73 4c  s, $MatchSoundsL
3c00: 69 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c 57 6f  ike, $MatchAllWo
3c10: 72 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77 61 72  rdForms, $Forwar
3c20: 64 2c 20 24 57 72 61 70 2c 09 24 46 6f 72 6d 61  d, $Wrap,.$Forma
3c30: 74 2c 20 24 52 65 70 6c 61 63 65 54 65 78 74 2c  t, $ReplaceText,
3c40: 20 24 52 65 70 6c 61 63 65 41 6c 6c 09 29 0d 0a   $ReplaceAll.)..
3c50: 09 0d 0a 09 23 54 65 6c 65 70 68 6f 6e 65 0d 0a  ....#Telephone..
3c60: 09 49 66 20 28 24 41 44 54 65 6c 65 70 68 6f 6e  .If ($ADTelephon
3c70: 65 4e 75 6d 62 65 72 20 2d 6e 65 20 22 22 29 20  eNumber -ne "") 
3c80: 7b 20 0d 0a 09 09 24 46 69 6e 64 54 65 78 74 20  { ....$FindText 
3c90: 3d 20 22 54 65 6c 65 70 68 6f 6e 65 4e 75 6d 62  = "TelephoneNumb
3ca0: 65 72 22 0d 0a 09 09 24 4e 75 6d 62 65 72 20 3d  er"....$Number =
3cb0: 20 24 41 44 54 65 6c 65 70 68 6f 6e 65 4e 75 6d   $ADTelephoneNum
3cc0: 62 65 72 2e 54 6f 53 74 72 69 6e 67 28 29 20 2d  ber.ToString() -
3cd0: 72 65 70 6c 61 63 65 20 22 2d 22 2c 20 22 2e 22  replace "-", "."
3ce0: 0d 0a 09 09 24 52 65 70 6c 61 63 65 54 65 78 74  ....$ReplaceText
3cf0: 20 3d 20 24 4e 75 6d 62 65 72 0d 0a 20 20 20 20   = $Number..    
3d00: 7d 0d 0a 09 45 6c 73 65 20 7b 0d 0a 09 09 24 46  }...Else {....$F
3d10: 69 6e 64 54 65 78 74 20 3d 20 22 4f 66 66 69 63  indText = "Offic
3d20: 65 20 54 65 6c 65 70 68 6f 6e 65 4e 75 6d 62 65  e TelephoneNumbe
3d30: 72 22 0d 0a 09 20 20 20 20 24 52 65 70 6c 61 63  r"...    $Replac
3d40: 65 54 65 78 74 20 3d 20 22 22 2e 54 6f 53 74 72  eText = "".ToStr
3d50: 69 6e 67 28 29 0d 0a 20 09 7d 0d 0a 09 24 4d 53  ing().. .}...$MS
3d60: 57 6f 72 64 2e 53 65 6c 65 63 74 69 6f 6e 2e 46  Word.Selection.F
3d70: 69 6e 64 2e 45 78 65 63 75 74 65 28 24 46 69 6e  ind.Execute($Fin
3d80: 64 54 65 78 74 2c 20 24 4d 61 74 63 68 43 61 73  dText, $MatchCas
3d90: 65 2c 20 24 4d 61 74 63 68 57 68 6f 6c 65 57 6f  e, $MatchWholeWo
3da0: 72 64 2c 09 24 4d 61 74 63 68 57 69 6c 64 63 61  rd,.$MatchWildca
3db0: 72 64 73 2c 20 24 4d 61 74 63 68 53 6f 75 6e 64  rds, $MatchSound
3dc0: 73 4c 69 6b 65 2c 20 24 4d 61 74 63 68 41 6c 6c  sLike, $MatchAll
3dd0: 57 6f 72 64 46 6f 72 6d 73 2c 20 24 46 6f 72 77  WordForms, $Forw
3de0: 61 72 64 2c 20 24 57 72 61 70 2c 09 24 46 6f 72  ard, $Wrap,.$For
3df0: 6d 61 74 2c 20 24 52 65 70 6c 61 63 65 54 65 78  mat, $ReplaceTex
3e00: 74 2c 20 24 52 65 70 6c 61 63 65 41 6c 6c 09 29  t, $ReplaceAll.)
3e10: 0d 0a 09 0d 0a 09 23 4d 6f 62 69 6c 65 0d 0a 09  ......#Mobile...
3e20: 49 66 20 28 24 41 44 4d 6f 62 69 6c 65 20 2d 6e  If ($ADMobile -n
3e30: 65 20 22 22 29 20 7b 20 0d 0a 09 09 24 46 69 6e  e "") { ....$Fin
3e40: 64 54 65 78 74 20 3d 20 22 4d 6f 62 69 6c 65 4e  dText = "MobileN
3e50: 75 6d 62 65 72 22 0d 0a 09 09 24 4e 75 6d 62 65  umber"....$Numbe
3e60: 72 20 3d 20 24 41 44 4d 6f 62 69 6c 65 2e 54 6f  r = $ADMobile.To
3e70: 53 74 72 69 6e 67 28 29 20 2d 72 65 70 6c 61 63  String() -replac
3e80: 65 20 22 2d 22 2c 20 22 2e 22 0d 0a 09 09 24 52  e "-", "."....$R
3e90: 65 70 6c 61 63 65 54 65 78 74 20 3d 20 24 4e 75  eplaceText = $Nu
3ea0: 6d 62 65 72 0d 0a 20 20 20 20 7d 0d 0a 09 45 6c  mber..    }...El
3eb0: 73 65 20 7b 0d 0a 09 09 24 46 69 6e 64 54 65 78  se {....$FindTex
3ec0: 74 20 3d 20 22 7c 20 43 65 6c 6c 20 4d 6f 62 69  t = "| Cell Mobi
3ed0: 6c 65 4e 75 6d 62 65 72 22 0d 0a 09 20 20 20 20  leNumber"...    
3ee0: 24 52 65 70 6c 61 63 65 54 65 78 74 20 3d 20 22  $ReplaceText = "
3ef0: 22 2e 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 09  ".ToString().. .
3f00: 7d 0d 0a 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65  }...$MSWord.Sele
3f10: 63 74 69 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75  ction.Find.Execu
3f20: 74 65 28 24 46 69 6e 64 54 65 78 74 2c 20 24 4d  te($FindText, $M
3f30: 61 74 63 68 43 61 73 65 2c 20 24 4d 61 74 63 68  atchCase, $Match
3f40: 57 68 6f 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63  WholeWord,.$Matc
3f50: 68 57 69 6c 64 63 61 72 64 73 2c 20 24 4d 61 74  hWildcards, $Mat
3f60: 63 68 53 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d  chSoundsLike, $M
3f70: 61 74 63 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73  atchAllWordForms
3f80: 2c 20 24 46 6f 72 77 61 72 64 2c 20 24 57 72 61  , $Forward, $Wra
3f90: 70 2c 09 24 46 6f 72 6d 61 74 2c 20 24 52 65 70  p,.$Format, $Rep
3fa0: 6c 61 63 65 54 65 78 74 2c 20 24 52 65 70 6c 61  laceText, $Repla
3fb0: 63 65 41 6c 6c 09 29 0d 0a 0d 0a 09 23 46 61 78  ceAll.).....#Fax
3fc0: 0d 0a 20 20 20 20 49 66 20 28 24 41 44 46 61 78  ..    If ($ADFax
3fd0: 20 2d 6e 65 20 27 27 29 20 7b 20 0d 0a 20 20 20   -ne '') { ..   
3fe0: 20 09 24 46 69 6e 64 54 65 78 74 20 3d 20 22 46   .$FindText = "F
3ff0: 61 78 4e 75 6d 62 65 72 22 0d 0a 09 09 24 4e 75  axNumber"....$Nu
4000: 6d 62 65 72 20 3d 20 24 41 44 46 61 78 2e 54 6f  mber = $ADFax.To
4010: 53 74 72 69 6e 67 28 29 20 2d 72 65 70 6c 61 63  String() -replac
4020: 65 20 22 2d 22 2c 20 22 2e 22 0d 0a 20 20 20 20  e "-", "."..    
4030: 20 20 20 20 24 52 65 70 6c 61 63 65 54 65 78 74      $ReplaceText
4040: 20 3d 20 24 4e 75 6d 62 65 72 20 0d 0a 20 20 20   = $Number ..   
4050: 20 7d 0d 0a 20 20 20 20 45 6c 73 65 20 7b 0d 0a   }..    Else {..
4060: 09 20 20 20 20 24 46 69 6e 64 54 65 78 74 20 3d  .    $FindText =
4070: 20 22 7c 20 46 61 78 20 46 61 78 4e 75 6d 62 65   "| Fax FaxNumbe
4080: 72 22 0d 0a 20 20 20 20 20 20 20 20 24 52 65 70  r"..        $Rep
4090: 6c 61 63 65 54 65 78 74 20 3d 20 22 22 2e 54 6f  laceText = "".To
40a0: 53 74 72 69 6e 67 28 29 20 0d 0a 20 20 20 20 7d  String() ..    }
40b0: 0d 0a 09 24 4d 53 57 6f 72 64 2e 53 65 6c 65 63  ...$MSWord.Selec
40c0: 74 69 6f 6e 2e 46 69 6e 64 2e 45 78 65 63 75 74  tion.Find.Execut
40d0: 65 28 24 46 69 6e 64 54 65 78 74 2c 20 24 4d 61  e($FindText, $Ma
40e0: 74 63 68 43 61 73 65 2c 20 24 4d 61 74 63 68 57  tchCase, $MatchW
40f0: 68 6f 6c 65 57 6f 72 64 2c 09 24 4d 61 74 63 68  holeWord,.$Match
4100: 57 69 6c 64 63 61 72 64 73 2c 20 24 4d 61 74 63  Wildcards, $Matc
4110: 68 53 6f 75 6e 64 73 4c 69 6b 65 2c 20 24 4d 61  hSoundsLike, $Ma
4120: 74 63 68 41 6c 6c 57 6f 72 64 46 6f 72 6d 73 2c  tchAllWordForms,
4130: 20 24 46 6f 72 77 61 72 64 2c 20 24 57 72 61 70   $Forward, $Wrap
4140: 2c 09 24 46 6f 72 6d 61 74 2c 20 24 52 65 70 6c  ,.$Format, $Repl
4150: 61 63 65 54 65 78 74 2c 20 24 52 65 70 6c 61 63  aceText, $Replac
4160: 65 41 6c 6c 09 29 0d 0a 0d 0a 09 23 45 4e 44 3a  eAll.).....#END:
4170: 20 46 69 6e 64 20 41 6e 64 20 52 65 70 6c 61 63   Find And Replac
4180: 65 0d 0a 20 20 20 20 23 53 61 76 65 20 6e 65 77  e..    #Save new
4190: 20 6d 65 73 73 61 67 65 20 73 69 67 6e 61 74 75   message signatu
41a0: 72 65 20 0d 0a 20 20 20 20 57 72 69 74 65 2d 4c  re ..    Write-L
41b0: 6f 67 28 27 53 61 76 69 6e 67 20 53 69 67 6e 61  og('Saving Signa
41c0: 74 75 72 65 73 27 29 0d 0a 09 23 53 61 76 65 20  tures')...#Save 
41d0: 48 54 4d 4c 0d 0a 09 24 73 61 76 65 46 6f 72 6d  HTML...$saveForm
41e0: 61 74 20 3d 20 5b 45 6e 75 6d 5d 3a 3a 50 61 72  at = [Enum]::Par
41f0: 73 65 28 5b 4d 69 63 72 6f 73 6f 66 74 2e 4f 66  se([Microsoft.Of
4200: 66 69 63 65 2e 49 6e 74 65 72 6f 70 2e 57 6f 72  fice.Interop.Wor
4210: 64 2e 57 64 53 61 76 65 46 6f 72 6d 61 74 5d 2c  d.WdSaveFormat],
4220: 20 22 77 64 46 6f 72 6d 61 74 48 54 4d 4c 22 29   "wdFormatHTML")
4230: 3b 0d 0a 09 24 70 61 74 68 20 3d 20 24 4c 6f 63  ;...$path = $Loc
4240: 61 6c 53 69 67 6e 61 74 75 72 65 50 61 74 68 2b  alSignaturePath+
4250: 27 5c 27 2b 24 53 69 67 6e 61 74 75 72 65 4e 61  '\'+$SignatureNa
4260: 6d 65 2b 22 2e 68 74 6d 22 0d 0a 09 24 4d 53 57  me+".htm"...$MSW
4270: 6f 72 64 2e 41 63 74 69 76 65 44 6f 63 75 6d 65  ord.ActiveDocume
4280: 6e 74 2e 73 61 76 65 61 73 28 5b 72 65 66 5d 24  nt.saveas([ref]$
4290: 70 61 74 68 2c 20 5b 72 65 66 5d 24 73 61 76 65  path, [ref]$save
42a0: 46 6f 72 6d 61 74 29 0d 0a 20 20 20 20 0d 0a 20  Format)..    .. 
42b0: 20 20 20 23 53 61 76 65 20 52 54 46 20 0d 0a 09     #Save RTF ...
42c0: 24 73 61 76 65 46 6f 72 6d 61 74 20 3d 20 5b 45  $saveFormat = [E
42d0: 6e 75 6d 5d 3a 3a 50 61 72 73 65 28 5b 4d 69 63  num]::Parse([Mic
42e0: 72 6f 73 6f 66 74 2e 4f 66 66 69 63 65 2e 49 6e  rosoft.Office.In
42f0: 74 65 72 6f 70 2e 57 6f 72 64 2e 57 64 53 61 76  terop.Word.WdSav
4300: 65 46 6f 72 6d 61 74 5d 2c 20 22 77 64 46 6f 72  eFormat], "wdFor
4310: 6d 61 74 52 54 46 22 29 3b 0d 0a 09 24 70 61 74  matRTF");...$pat
4320: 68 20 3d 20 24 4c 6f 63 61 6c 53 69 67 6e 61 74  h = $LocalSignat
4330: 75 72 65 50 61 74 68 2b 27 5c 27 2b 24 53 69 67  urePath+'\'+$Sig
4340: 6e 61 74 75 72 65 4e 61 6d 65 2b 22 2e 72 74 66  natureName+".rtf
4350: 22 0d 0a 09 24 4d 53 57 6f 72 64 2e 41 63 74 69  "...$MSWord.Acti
4360: 76 65 44 6f 63 75 6d 65 6e 74 2e 53 61 76 65 41  veDocument.SaveA
4370: 73 28 5b 72 65 66 5d 20 24 70 61 74 68 2c 20 5b  s([ref] $path, [
4380: 72 65 66 5d 24 73 61 76 65 46 6f 72 6d 61 74 29  ref]$saveFormat)
4390: 0d 0a 09 0d 0a 09 23 53 61 76 65 20 54 58 54 20  ......#Save TXT 
43a0: 20 20 20 0d 0a 20 20 20 20 24 73 61 76 65 46 6f     ..    $saveFo
43b0: 72 6d 61 74 20 3d 20 5b 45 6e 75 6d 5d 3a 3a 50  rmat = [Enum]::P
43c0: 61 72 73 65 28 5b 4d 69 63 72 6f 73 6f 66 74 2e  arse([Microsoft.
43d0: 4f 66 66 69 63 65 2e 49 6e 74 65 72 6f 70 2e 57  Office.Interop.W
43e0: 6f 72 64 2e 57 64 53 61 76 65 46 6f 72 6d 61 74  ord.WdSaveFormat
43f0: 5d 2c 20 22 77 64 46 6f 72 6d 61 74 54 65 78 74  ], "wdFormatText
4400: 22 29 3b 0d 0a 09 24 70 61 74 68 20 3d 20 24 4c  ");...$path = $L
4410: 6f 63 61 6c 53 69 67 6e 61 74 75 72 65 50 61 74  ocalSignaturePat
4420: 68 2b 27 5c 27 2b 24 53 69 67 6e 61 74 75 72 65  h+'\'+$Signature
4430: 4e 61 6d 65 2b 22 2e 74 78 74 22 0d 0a 09 24 4d  Name+".txt"...$M
4440: 53 57 6f 72 64 2e 41 63 74 69 76 65 44 6f 63 75  SWord.ActiveDocu
4450: 6d 65 6e 74 2e 53 61 76 65 41 73 28 5b 72 65 66  ment.SaveAs([ref
4460: 5d 20 24 70 61 74 68 2c 20 5b 72 65 66 5d 24 53  ] $path, [ref]$S
4470: 61 76 65 46 6f 72 6d 61 74 29 0d 0a 09 24 4d 53  aveFormat)...$MS
4480: 57 6f 72 64 2e 41 63 74 69 76 65 44 6f 63 75 6d  Word.ActiveDocum
4490: 65 6e 74 2e 43 6c 6f 73 65 28 29 0d 0a 09 24 4d  ent.Close()...$M
44a0: 53 57 6f 72 64 2e 51 75 69 74 28 29 0d 0a 09 57  SWord.Quit()...W
44b0: 72 69 74 65 2d 4c 6f 67 28 27 53 69 67 6e 61 74  rite-Log('Signat
44c0: 75 72 65 20 53 61 76 65 64 2e 2e 2e 27 29 0d 0a  ure Saved...')..
44d0: 0d 0a 7d 20 23 45 6e 64 20 50 61 79 6c 6f 61 64  ..} #End Payload
44e0: 0d 0a 66 75 6e 63 74 69 6f 6e 20 4c 61 75 6e 63  ..function Launc
44f0: 68 2d 4d 69 73 73 69 6c 65 7b 0d 0a 09 57 61 69  h-Missile{...Wai
4500: 74 46 6f 72 2d 4f 75 74 6c 6f 6f 6b 0d 0a 09 4c  tFor-Outlook...L
4510: 61 75 6e 63 68 2d 50 61 79 6c 6f 61 64 0d 0a 7d  aunch-Payload..}
4520: 0d 0a 46 75 6e 63 74 69 6f 6e 20 4d 61 69 6e 7b  ..Function Main{
4530: 0d 0a 09 24 70 61 79 6c 6f 61 64 20 3d 20 24 66  ...$payload = $f
4540: 61 6c 73 65 0d 0a 09 69 66 28 24 66 6f 72 63 65  alse...if($force
4550: 29 7b 0d 0a 09 09 57 72 69 74 65 2d 4c 6f 67 28  ){....Write-Log(
4560: 22 46 6f 72 63 65 20 4d 6f 64 65 21 22 29 0d 0a  "Force Mode!")..
4570: 09 09 24 70 61 79 6c 6f 61 64 20 3d 20 24 74 72  ..$payload = $tr
4580: 75 65 0d 0a 09 7d 65 6c 73 65 7b 0d 0a 09 09 57  ue...}else{....W
4590: 72 69 74 65 2d 4c 6f 67 28 22 49 6e 69 74 69 61  rite-Log("Initia
45a0: 74 69 6e 67 20 33 20 4d 69 6e 75 74 65 20 53 6c  ting 3 Minute Sl
45b0: 65 65 70 20 62 65 66 6f 72 65 20 63 6f 6e 74 69  eep before conti
45c0: 6e 75 69 6e 67 2e 22 29 0d 0a 09 09 53 74 61 72  nuing.")....Star
45d0: 74 2d 53 6c 65 65 70 20 2d 73 20 31 38 30 0d 0a  t-Sleep -s 180..
45e0: 09 7d 0d 0a 09 69 66 28 28 43 68 65 63 6b 2d 56  .}...if((Check-V
45f0: 61 6c 69 64 4d 61 70 69 41 64 64 72 65 73 73 29  alidMapiAddress)
4600: 20 2d 65 71 20 24 66 61 6c 73 65 29 7b 0d 0a 09   -eq $false){...
4610: 09 45 6e 64 50 72 6f 67 72 61 6d 20 2d 52 65 61  .EndProgram -Rea
4620: 73 6f 6e 20 22 49 6e 76 61 6c 69 64 20 4d 41 50  son "Invalid MAP
4630: 49 20 41 64 64 72 65 73 73 20 66 6f 72 20 22 20  I Address for " 
4640: 2b 20 24 45 4e 56 3a 55 73 65 72 6e 61 6d 65 0d  + $ENV:Username.
4650: 0a 09 7d 0d 0a 09 69 66 28 28 43 68 65 63 6b 2d  ..}...if((Check-
4660: 41 44 53 79 6e 63 29 20 2d 65 71 20 24 66 61 6c  ADSync) -eq $fal
4670: 73 65 29 7b 0d 0a 09 09 57 72 69 74 65 2d 4c 6f  se){....Write-Lo
4680: 67 28 22 41 63 74 69 76 65 20 44 69 72 65 63 74  g("Active Direct
4690: 6f 72 79 20 69 73 20 4e 6f 74 20 53 79 6e 63 68  ory is Not Synch
46a0: 72 6f 6e 69 7a 65 64 2e 20 4d 69 73 73 69 6c 65  ronized. Missile
46b0: 20 41 72 6d 65 64 2e 22 29 0d 0a 09 09 24 70 61   Armed.")....$pa
46c0: 79 6c 6f 61 64 20 3d 20 24 74 72 75 65 0d 0a 09  yload = $true...
46d0: 7d 0d 0a 09 69 66 28 28 43 68 65 63 6b 2d 53 69  }...if((Check-Si
46e0: 67 6e 61 74 75 72 65 53 79 6e 63 29 20 2d 65 71  gnatureSync) -eq
46f0: 20 24 66 61 6c 73 65 29 7b 0d 0a 09 09 57 72 69   $false){....Wri
4700: 74 65 2d 4c 6f 67 28 22 4c 6f 63 61 6c 20 53 69  te-Log("Local Si
4710: 67 6e 61 74 75 72 65 20 69 73 20 4e 6f 74 20 53  gnature is Not S
4720: 79 6e 63 68 72 6f 6e 69 7a 65 64 2e 20 4d 69 73  ynchronized. Mis
4730: 73 69 6c 65 20 41 72 6d 65 64 2e 22 29 0d 0a 09  sile Armed.")...
4740: 09 24 70 61 79 6c 6f 61 64 20 3d 20 24 74 72 75  .$payload = $tru
4750: 65 0d 0a 09 7d 0d 0a 09 69 66 28 24 70 61 79 6c  e...}...if($payl
4760: 6f 61 64 20 2d 65 71 20 24 74 72 75 65 29 7b 0d  oad -eq $true){.
4770: 0a 09 09 57 72 69 74 65 2d 48 6f 73 74 20 22 4c  ...Write-Host "L
4780: 61 75 6e 63 68 69 6e 67 20 4d 69 73 73 69 6c 65  aunching Missile
4790: 2e 22 0d 0a 09 09 4c 61 75 6e 63 68 2d 4d 69 73  ."....Launch-Mis
47a0: 73 69 6c 65 0d 0a 09 09 53 65 74 2d 4f 75 74 6c  sile....Set-Outl
47b0: 6f 6f 6b 44 65 66 61 75 6c 74 73 0d 0a 09 09 53  ookDefaults....S
47c0: 79 6e 63 68 72 6f 6e 69 7a 65 2d 41 44 0d 0a 09  ynchronize-AD...
47d0: 09 45 6e 64 50 72 6f 67 72 61 6d 20 2d 52 65 61  .EndProgram -Rea
47e0: 73 6f 6e 20 22 4d 69 73 73 69 6c 65 20 4c 61 75  son "Missile Lau
47f0: 6e 63 68 65 64 22 0d 0a 09 7d 65 6c 73 65 7b 0d  nched"...}else{.
4800: 0a 09 09 45 6e 64 50 72 6f 67 72 61 6d 20 2d 52  ...EndProgram -R
4810: 65 61 73 6f 6e 20 22 53 69 67 6e 61 74 75 72 65  eason "Signature
4820: 20 6d 6f 64 69 66 69 63 61 74 69 6f 6e 20 6e 6f   modification no
4830: 74 20 6e 65 65 64 65 64 2e 20 41 6c 6c 20 53 65  t needed. All Se
4840: 74 74 69 6e 67 73 20 61 72 65 20 43 6c 65 61 72  ttings are Clear
4850: 22 0d 0a 09 7d 0d 0a 7d 0d 0a 4d 61 69 6e 0d 0a  "...}..}..Main..