The question's original issue was the difference between -ne and !=; this was addressed in comments.
Once OP switched to using != this allowed the second issue to bubble to the top ... the != was evaulating as 'true' when the two strings appeared to be the same.
This answer addresses the second issue ...
I'm running bash in a cygwin environment (ie, under windows so I have access to powershell.exe).
Running OP's code I also get the same results:
Windows: 2023/02/07 09:32:47
WSL: 2023/02/07 09:32:47
NotSynced
If we take a look at the actual contents of these 2 variables we see:
$ echo "$WinTime" | od -c
0000000 2 0 2 3 / 0 2 / 0 7 0 9 : 3 2
0000020 : 4 7 \r \n
0000025
$ echo "$WSLTime" | od -c
0000000 2 0 2 3 / 0 2 / 0 7 0 9 : 3 2
0000020 : 4 7 \n
0000024
Notice that $WinTime includes a trailing \r (windows/dos line ending) which is the result of running the Windows binary powershell.exe. This extra \r is causing the conditional to evaluate as 'true' and thus print NotSynced.
OP will want to remove the trailing \r.
I don't know enough about powershell to know if it has an option to disable the \r so I'll let tr remove the \r:
WinTime=$(powershell.exe "& {get-date -UFormat '%Y/%m/%d %H:%M:%S'}" | tr -d '\r')
We can see the \r no longer exists:
$ echo "$WinTime" | od -c
0000000 2 0 2 3 / 0 2 / 0 7 0 9 : 3 6
0000020 : 2 2 \n
0000024
And now the conditional evaluates as 'false' and prints Synced.
NOTE: the script could still report NotSynced in the scenario where the two time capture commands run just before/after a change in seconds