Outlook Shared Calendars Showing “Cannot Be Updated”

This is a running issue in certain places where Microsoft Exchange is hosted on site.  A user will share their calendar and the recipient won’t be able to see it because the calendar will show “cannot be updated” or some similar message on the Calendar tab.

There are a lot of fixes for this out there that might work. One is to set Outlook in Cached Mode, or take it out of Cached Mode and put it back. Sometimes this works, sometimes it doesn’t.

What I was able to track down was that the account doing the sharing sometimes gets corrupted on the Exchange server itself. The default calendar’s sharing permissions get messed up somehow and must be set back to defaults.

How to Fix Outlook Shared Calendars Showing “Cannot Be Updated”

Step 1 – Log into your Exchange Server and Open the Exchange Management Shell. It’s the Powershell with the orange icon behind it.

Step 2 – Enter the following command:

Get-MailboxFolderPermission -Identity username:\calendar

You should get a readout that looks something like this:

RunspaceId : 18b6bb25-14bf-40cc-9843-c76c4d2f5116
FolderName : Calendar
User : Default
AccessRights : {AvailabilityOnly}
Identity : Default
IsValid : True

There might be a bunch of other stuff on there but the first group should be the default. What you’re looking for is the “Access Rights” row. If it says {None}, there’s a good chance that’s part of your problem. If it says LimitedDetails or AvailabilityOnly, you probably have another problem.

Note – username could be the person’s windows login name, an email address or an alias, you might need to experiment a little to figure out what it is for your environment.

Step 4 – Once you’ve determined whether this is your problem or not type the following:

Set-MailboxFolderPermission -Identity username:\calendar  -User Default -AccessRights AvailabilityOnly

Note- I noticed that on Microsoft’s site there was a space between :\ and calendar. I was given an error when I typed it like that, but not when I excluded the space. The article was for Exchange 2010, so I’m not sure what the problem was. Also the article I referenced this code from used an email address as the Identity, that did not work for me with either Get or Set Mailbox Folder Permissions. I suspect it is different depending on environment. I also do not know if “Default” should be capitalized, I suspect not.

You can also change the “AvailabilityOnly” to “LimitedDetails”, that’s just the default on all the Exchange Servers I work with.

This seems to fix some of the weirder cases of this problem. The recipient user may need to close Outlook, re-add the calendar, wait a while, or reboot but it does seem to work.

If this doesn’t correct the problem, it will at least correct a permission issue that isn’t obvious on your server.

 

How To Fix Outlook 2016 Freezing on Loading Profile

I haven’t found a permanent fix for this problem in all cases. So consider this article “ongoing” for now. I’ve noticed that sometimes that Outlook 2016 will freeze on the “Loading Profile” screen on Windows 10 computers. This seems fairly specific to machines connected to an Exchange account of some kind.

The first few times I encountered it the below fix resolved it completely after one time. I have seen a few computers where, it still does this despite a local profile wipe (which on Windows 10 is not the best idea apparently). It usually happens after the user reboots. If anyone knows what actually causes this problem, and an actual fix, rather than the below “band-aid” I’d love to hear it and will give credit in an addendum to the article.

Fix Outlook 2016 Freeze on “Loading Profile” Screen

Step 1 – Either close Outlook or have the user do it. You can kill the task remotely or just close the load screen window. It isn’t really frozen, it’s just stuck most of the time.

Step 2 – Navigate to the following directory on the user’s machine: C:\Users\[user profile name]\AppData\Local\Microsoft\Outlook

Tip: You can do this remotely by navigating to \\[user’s PC hostname]\C$\Users\[user profile name]\AppData\Local\Microsoft\Outlook

Step 3 – Look for a file in that directory called “useremailaddress@domain.com.ost”. Delete it.

Step 4 – Have the user re-open Outlook.

This seems to resolve the problem. The issue seems to stem from a corrupted OST file or something. Sometimes this will keep happening when the user reboots the computer or the computer updates. Most of the time not though.  I’ve tried the following to fix the issue on the machines where this recurs with no luck:

  • Making a new Mail Profile and re-setting up Outlook
  • Doing a full Profile Wipe on the local computer
  • Doing a Windows 10 “restore”
  • Repairing Office.

I haven’t tried taking Office completely off and putting it back on, may try that next and see if it’s just a corrupted Office installation, nor have I tried removing the affected user’s Inbox at the Exchange level and see if that fixes it. I tend to think it’s a problem on the local machine as only certain PC’s have the problem.

I’ve read a few Technet articles and had very little luck with that either.

It could, in theory be some other file that’s corrupted, I have a hard time believing Outlook would repeatedly corrupt an OST file, I have not tried removing the entire Outlook Folder to see if that fixes the issue.

If anyone has any ideas please let me know!

How To Schedule Remote Restarts For Windows PC’s In A Specific OU – Server Basics

Restarting a local server once after hours is a pretty neat trick but sometimes you need to restart an entire Organizational Unit of computers. There’s a few ways to do this. You can do it with the shutdown command by hostname and keep a little batch script updated. Or you can use a PowerShell Script.

I’d like to credit Jack McCarty for this command. He came up with most of this either on his own or from stuff he found various places on the internet.

 

How To Remotely Restart Computers In A Specific OU With Powershell

This is one of several methods and, honestly it’s pretty slow but it works pretty well, and the advantage is you can just add machines to the OU you want to restart. This is a pretty flexible command/script and can be modified to do other things instead of restarting computers. Also, please note this forces the restart.

Step 1 – Open up your favorite script editor on your server. I like Notepad++ personally. The Powershell ISE is pretty good as well.

Step 2 – Copy and paste the code snippet below into your code editor and change it. The appropriate place to modify is the string after -searchbase. You’ll need to change “OU=Lab, OU=Workstations, DC=workendtech, DC=local” to fit your environment. If your domain is say, Example.com and you wanted to reboot everything in the Computers CN you’d change it to something like “CN=Computers, DC=Example, DC=com”.

get-adcomputer -filter * -searchbase "OU=Lab, OU=Workstations, DC=workendtech, DC=local"|Select * ,@{n='computername';e={$_.name}} |restart-computer -force

Step 3 – Save the file as a plain text file with a .ps1 file extension. Some code editors will have a Save As “PowerShell Script” file type that will do this do you.

Step 4 – Run the script through Powershell. You can also run the command directly without saving it as a script.

Scheduling A Powershell Script in Task Manager

There’s not much to scheduling a powershell script in task manager.

Step 1 – Create your Task as normal

Step 2 – In the Actions Window/Tab type “powershell” (without the quotes) in the ‘program/script’ box. In the arguments type “-file ” in the arguments box. You can also add the path to your script in the “Start In”  box.

Note: Some scripts may need a few extra arguments. Testing the command in your command prompt will usually help you figure that out. The one above seems to work just fine with just “-file”.

How To Schedule Windows Server For Automatic Restart – Server Basics

 

This is one of those really basic tasks you can easily set up with no added software or even Powershell scripts. It’s extremely useful too. Say you need to reboot a server because you installed some software that you didn’t expect needed a reboot, or there’s some updates, or some other reason. You can’t really do it until after hours and you don’t want to hang around and would just like it to reboot itself a couple of hours after closing time when everyone is home.

You might also want to reboot a Windows Server a month or once a week as a matter of routine maintenance.

This is fairly trivial to set up in Task Scheduler.

How To Schedule A Windows Server For Automatic Reboot

Note: I’m using Server 2016. This is almost exactly the same in 2008 and 2012.

Step 1 – Open Task Scheduler. In the newer versions of Windows Server you can just click on the start button and type “Task Scheduler”. You can find it manually under Control Panel under Administrative Tools. You can find it in the Start Menu in Server 2003 but the Task Scheduler is a bit different.

Step 2 – Right Click on the Task Scheduler Library (Highlighted in the picture in Step 1) and click “Create Basic Task”. This will open the Wizard. You don’t have to use the Wizard, but since this is a very simple task it’s easier.

Step 3 – Give a name to the task. I called this “Restart Server Once”. In a multi-server environment, my personal preference is to call it “Restart This Server Once” or “Restart Local Server Once” to show that the task restarts that specific machine. As I usually also have tasks to restart remote servers and workstations on at least one of them as well. If I were also making one to restart the box on a schedule I’d name it something like, “Restart Local Server On First Of Month”.

Click Next.

Step 4 – Since this task is to just restart the server one time click the “One Time” option and then click next.

You’ll note the sub-task called “One Time” under triggers.

Step 5 – Give it a date and time to restart. Click next.

I chose 8pm the next day.

Step 6 – Select “Start A Program”. Click Next.

Step 7 – Type “shutdown” without the quotes into the “Program/Script” box and “/r” into the “Add arguments” box. Click Next.

Step 8 – Click Finish

Step 9 – You aren’t done yet because you want this to run if you get logged off and you want to set this up so you can use it again later.  In the Task Scheduler right-click on your new task and click Properties. This will bring up the general settings page. The radio buttons on the bottom will default to “Run only when user is logged on” change it to “Run whether user is logged on or not”.

Step 10 – Click OK. It will make you enter your administrator password.

You’re finished!

Changing the Schedule for The Automatic Reboot

So now you have a task that will automatically reboot your server (Or PC) one time. Now  you need it to do it again. There’s no need to make another task, you just need to update the trigger.

Step 1 – Go back into Task Scheduler, right-click on your task and click Properties. Click on the Triggers tab.

Step 2 – Click on the “One Time” trigger and click the Edit button. Change the time and date, click OK on all the dialog boxes and your server/PC will now restart at the new time.

It will ask  you to re-enter the administrator password.

How To Set a A Static IP Address In Windows – Server Basics

A lot of my articles, and IT work in general requires setting a static IP address up for your Windows Server or PC. So here’s how to do it.

Note that this procedure will work equally well for Windows 10, and Server 2016. The procedure is fairly similar for Server 2008 and 2012 though it’s easier to go through the “Network and Sharing Center” to get to the Adapter Settings. The idea is pretty similar for Windows 7/Vista. If you’re using Windows XP, it’s still pretty similar but getting to the Network Properties Window is different.  This guide is specifically for Server 2016.

How To Set a Static IP Address in Windows Server 2016

Step 1 – Click the Start button and then click the gear button on the left hand side of the start panel. This should bring up the Settings Window.

Step 2 – Select “Network and Internet”

Step 3 – Select “Ethernet” from the left hand side. If you’re connected with WiFi, you can click that, it’s all going to the same place eventually anyway. 

Step 4 – Under related settings click on “Change Adapter Settings”. You can also get here in fewer steps by opening the Control Panel, changing the view to “Large Icons”, opening the “Network and Sharing Center” and clicking on the “Change Adapter Settings” on the left.

 

Step 5 – Find your active Ethernet Adapter and right click on it and hit properties. Many actual servers have two when they come out of the box, so if you’ve got it hooked in to your router it’ll be the one that isn’t grayed out. My server is just a fancy PC so it just has one. Normal PC’s usually just have one, so it’s pretty easy to figure out. If you’re trying to do this for your WiFi adapter, right click on it and hit properties, the process is the same.

Step 6 – Most networks are still IP4 so click on TCP/IPv4 settings and hit the “Properties” button.

Step 7 – Enter your static IP address information. If you aren’t sure exactly what to put here, refer to the quick and dirty network guide at the end of this article. I’ll post a better one later for setting up a basic flat network.

Step 8 – Click OK on everything and you’re done!

Quick and Dirty Network Analysis Guide

So you know you server needs a static IP but you don’t really know how to figure out exactly what IP to use? Or even what to put in the DNS information? Well here’s a few tips. Keep in mind this is a method I’ve used for small networks where I had no information going in and it works pretty well but is by no means 100% fool proof. There are things in more complicated networks that can cause this not to work, but for most small to medium sized business and home networks this is a good way to go about it.

Step 1 – Determine Network IP Layout

Find a PC already on the network, open a command prompt and type “ipconfig /all” and hit enter. This should bring up all kinds of network information. You’ll see an IP address, subnet mask, gateway and DNS servers, DHCP server, and other stuff. Write it all down. It’ll probably look something like this on a small network.

IP – 192.168.1.102
Subnet Mask – 255.255.255.0
Gateway – 192.168.1.1

DNS Server: 192.168.1.1
Alternate DNS Server: 8.8.8.8 (may not even have one)

DHCP Server: 192.168.1.1

This is probably a basic network. Again, write it all down, it’s important. Other IP schemes could be something like 10.1.1.1 or 172.16.0.100 or something like that. This method really only starts getting weird on big networks with subnet masks like 255.255.0.0 or really small ones with masks like 255.255.255.240. If you see that, you will probably need to do some additional research.

Step 2 – Find a Free IP address that Hopefully Is Not In DHCP Range

If the IP address is something like 192.168.1.100 or 192.168.1.103, there aren’t many computers on the network, and the DHCP server is the same as the gateway, you’re in luck. It’s a super basic network. If the DHCP server is different, it still doesn’t matter much it’s just something to keep in mind. Likely the range is 192.168.1.100-192.168.1.200. So just cross those IP’s off your list of possibilities.

Personally, for servers I like to start low. So open a command prompt and type “ping 192.168.1.2” and see if you get a response. If you do, type the same thing except change that last 2 to a 3 and keep doing that until you don’t get a response. When you don’t get a response, that’s you’re IP address. Likely as not you won’t get one on your first try if it’s a really small network and they don’t have a server, but there might be some network printers or something in the way and you don’t want to have conflicting IP addresses.

Now if it’s a regular PC or something I like to start higher, so I personally would start at around 240 and start pinging.

Step 3 – Enter the IP Information Into your Server or PC.

Take your newly found IP address and the information you wrote down and enter it into the server using the steps above. Make sure it matches. Practically every time this will work. If you get a “Duplicate IP Address” warning just go back to pinging on a working PC until you find another free one. Sometimes firewalls or something have pinging turned off. There is also free network scanning software you can download that will make this process a lot faster.

Note: If anyone has a better, faster, or quicker way to find a free IP address that you can do from a normal workstation on a network or something I’d be glad to post it. Like I said, this is the method I’ve been using for small networks for a long time where I’ve had no information going in and just needed to install a printer or appliance or something.