Unable to Print to Epson Dot Matrix printers after Windows Updates

I received a call from a customer today who was suddenly unable to print to Epson Dot Matrix printers, after a LOT of troubleshooting I figured out that this is due to a Windows update.

Printers I can confirm that are not working after the updates are:

  • Epson LQ-300
  • Epson LQ-300+ II
  • Epson LQ310
  • Epson LX300
  • Epson LQ2180
  • Epson LQ2190
  • Epson LQ730K

Windows Updates have been issued for Windows 7, 8 and 10 and they are all having the same issue. The updates are:

There may be other updates which I am not aware of yet.

To get your printers working again, the quickest way is to remove the offending update. As you might not be sure which update you have installed. The quickest way is to run the following commands in an elevated command prompt:

wusa /uninstall /kb:4048952 /quiet /warnrestart
wusa /uninstall /kb:4048953 /quiet /warnrestart
wusa /uninstall /kb:4048954 /quiet /warnrestart
wusa /uninstall /kb:4048955 /quiet /warnrestart
wusa /uninstall /kb:4048957 /quiet /warnrestart
wusa /uninstall /kb:4048958 /quiet /warnrestart

Until Microsoft release an updated security patch you can temporarily block the patch using this tool from Microsoft:

Microsoft Patch Blocker

Or if you are using WSUS then you can block the patch from there. This is really a difficult problem to resolve if you don’t realise that the problem is being caused by an update, because you would’t expect an old Dot Matrix printer that has been working fine for years to be impacted by a Microsoft Security Roll-up.

I don’t know if this is happening to other Dot Matrix Printers besides Epson at the moment.

Microsoft have updated the KB articles to acknowledge that these updates are the cause of the problem:

Microsoft confirmation of problems with Epson Printers after installing November 2017 security roll-up patches.

Update 21/11/2017 – Problem has been fixed by Microsoft

Microsoft have now issued an updated patch which will should download automatically via Windows Update, but if you want to grab it manually it can be found here:

https://support.microsoft.com/en-us/help/4055038/november-21-2017-kb4055038

Office 365: How to hide a user from the Global Address List when using Dirsync,AADSync or Azure Active Directory Connect

It’s easy to hide a user from the Global Address List(GAL) when your Office 365 tenant is not being synced to your on-premise Active Directory, but if you are syncing to Office 365 which with any of the following tools:

  • Windows Azure Active Directory Sync (DirSync)
  • Azure AD Sync (AADSync)
  • Azure Active Directory Connect

Then you will be unable to hide a user from using the Office 365 Web Interface or PowerShell. From both interfaces you will get the following error:

The operation on mailbox “Paulie” failed because it’s out of the current user’s write scope. The action
‘Set-Mailbox’, ‘HiddenFromAddressListsEnabled’, can’t be performed on the object ‘Paulie’ because the object
is being synchronized from your on-premises organization. This action should be performed on the object in your
on-premises organization.

From the web interface it will look like this:

Unable to hide mailbox from Office 365 when synced to on-premise active directory

How to hide a user from the Global Address List

So, now that we know that is has to be done on-premise, what needs to be changed and what is the quickest and easiest way to change it?

The active directory property “msExchHideFromAddressLists” property needs to be set to “true” and here are two ways of changing it.

Using ADSI Edit to hide a user from the Global Address List

You can use ADSI Edit and navigate to your user and modify the property “msExchHideFromAddressLists” and simply change it to true. It is quite easy to do, but long winded and awkward.

Using adsiedit to set MsExchHideFromAddressLists to true to hide a user from the Office 365 GAL

Using PowerShell to hide a user from the Global Address List

The same operation as above can be achieved in a single line of Powershell using the Set-User cmdlet. This is a much faster and less error prone method of doing the same operation.

Here is an example:

Set-ADUser paulie -Replace @{msExchHideFromAddressLists=$true}

and to un-hide the user:

Set-ADUser paulie -Replace @{msExchHideFromAddressLists=$false}

It’s really much easier to do in Powershell than ADSI Edit, but either way will work and the next time your AD synchronises with Office 365, the user should be hidden.

msExchHideFromAddressLists property missing from Active Directory?

If you discover that the msExchHideFromAddressLists property does not exist in your local active directory if you have never had a Microsoft Exchange Installed locally:

Image of ADSI Edit showing that the msExchHideFromAddressLists Active Directory property is missing
msExchHideFromAddressLists property missing from Active Directory

It is possible to extend the active directory schema to contain the required Exchange attributes without purchasing or installing Microsoft Exchange server. The easiest way to achieve this is to download the evaluation of Exchange Server 2013 and then:

  • Extract the contents of the download to a folder of your choice.
  • Run “setup.exe /prepareschema /iacceptexchangeserverlicenseterms” as per this screenshot:
    Screenshot of Extending the AD Schema to include Exchange Attributes
  • You should now have the msExchHideFromAddressLists active directory property available:
    msExchHideFromAddressLists property added to active directory by extending schema using Exchange 2013 evaluation

 

To list all users that are hidden from the GAL

Bonus bit of PowerShell – if you want to list all users that are hidden from the GAL, try this:

Get-ADUser -Filter {msExchHideFromAddressLists -eq "TRUE"} |Select-Object UserPrincipalName