Exchange 2016 CU6 and inaccessible OWA.

A lot of users faced inaccessible Outlook Web Access after CU6 installation. This can also affect users who reissue “Microsoft Exchange Server Auth Certificate” (if they are running CU6 version).
This is applied to situation when user gets “Something went wrong” and error with ID 500, on the server side warning appeared in the eventLog as:
Log Name: Application
Source: ASP.NET 4.0.30319.0
Date: 3/24/2018 12:46:43 PM
Event ID: 1309
Task Category: Web Event
Level: Warning
Keywords: Classic
User: N/A
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 3/24/2018 12:46:43 PM
Event time (UTC): 3/24/2018 8:46:43 AM

You should get following phrase in the logEntry: Encryption certificate is absent
This is Microsoft guys, you will never understand whats going wrong when you read log error.

As a workaround you can change your TimeZone to match UTC. From my event you can see that the time is 12:46 PM, just change time zone to UTC, in my case time has been changed from 12 PM to 8 AM and issue with OWA disappeared. I suppose that you can roll-back your timeZone (in my example with GMT +4 timeshift to UTC is 6 hours).

So thanks to Microsoft that they are pushing us out to use O365:)

Update: After 6 hours I changed time zone back and did IISRESET, everything is working so far.

PowerCli. Automate VM deployment with static IP and some others customization.

Recently I’ve been requested to deploy plenty of virtual machines with static IP address and custom password. These VMs should not be controlled by our IT department so I cannot use tools like Config Manager.
I decided to write a custom PowerShell function and share with you. My script require you to be connected to the vcenter with PowerCli module as well as required permission to deploy VM.
You can add forEach loop and pass a CSV file to run script.

Some parameters will be checked prior VM creation, such as:
Datastore Name
VM name, if name already exsist
Resource pool and folder (folder will be created if script won’t find one)
VM cluster if exsist
Provided disk capacity must be greater that source VM

Here is the script:

You should see progress in on your console, here is how it looks like:

You can grab script here.

Feel free to add more functionality if you want or make some piece of code more effective.
This script works with one disk and one network adapter, so you can add these features and of course one good thing is RunOnce that VmWare supports in their PowerCli modeule you should’t forget about.

Keep scripting.