First I have to say that I have not touched Windows 10 yet, and I have not touched raspberries yet. On the other hand, I saw the following method for solving all the problems of time synchronization with a large number of Windows machines of all kinds that you could try.
Problems (in my experience):
1) time.windows.com is extremely unreliable. In my settings and for several clients, in most cases, the time did not provide reliable synchronization after installing Windows, even if the wireless connection was not involved, and even if there was a high data transfer rate / low latency connection to the Internet provider.
2) Windows seems to be requesting NTP servers in an unusual (we can also say: wrong) way. Although I am not deep enough in NTP to give a detailed explanation, Windows as a client seems to send so-called "symmetrical active" packets to the servers instead of the usual "client packets". Thus, at first it works very unrealistically with other (standard) NTP servers.
Possible solutions
The solution to the problem 1) is obvious: install a standard NTP server somewhere on your network. If you have a Linux box on hand, I could eventually help you set it up correctly. Then connect your raspberries to this NTP server via cable, and on raspberries, apply the solution to Problem 2 (see below).
The solution to the problem 2) is less obvious and involves setting an undocumented flag (at least it is not documented in Windows 7 Pro, which I now have) for the Windows time service. You have already requested the status of the Windows Time Service, and you have shown us the result. Pay attention to the following part of your output (for example, for device 2):
Source: time.windows.com,0x9 Poll Interval: 15 (32768s)
The problem is 0x9 , which should be 0x8 . To change this flag, open a command prompt window as an administrator (just belonging to an administrative group will not be enough) and run the following command:
w32tm /config /manualpeerlist:xxx.xxx.xxx.xxx,0x8 /syncfromflags:MANUAL
Please note that the correct 0x8 flag has been added (of course, xxx.xxx.xxx.xxx is the IP address of your NTP server, but you can specify the usual host name (for example, ntpserver.example.org) as Well). Basically, the above line tells the Windows Time service which server it should synchronize to, that it should only synchronize with this server, and that it should send regular client requests (instead of active symmetric packets) to this server.
After you have done this, you need to apply this change by restarting the Windows Time service, updating its configuration (I prefer the first one).
If you request status again, your output will include the following part:
Source: xxx.xxx.xxx.xxx,0x8 Poll Interval: xx (xxxxxs)
Note that now the output flag has changed from 0x9 to 0x8 .
Last two notes
1) I'm not sure if the solution to the problem works 2) if you insist on synchronization with time.windows.com. Since it is not reliable, I have not used it for many years. Most likely, the situation even gets worse if you change the flag from 0x9 to 0x8 , but still use time.windows.com as an NTP server.
Setting up your own NTP server on your local network is a very good idea for several reasons (I will not go into details here because it will be off topic). If you cannot or do not want to do this, I recommend using other public time servers (start your search by visiting http://www.ntp.pool.org ) instead of time.windows.com. They will definitely work with solving the problem 2).
2) As a last resort, you can try to install another time service on Windows. For example, there is a full-blown NTP software port for Windows, but AFAIK, only for the Intel platform. Since I donโt know anything about the Raspberry (ARM) platform, I donโt know if there is any other time maintenance software, so this is just an idea if every other method fails.