Why the Hyper-V host is not using the Domain Controller that has PDC Emulator Role, even after I ran the command?
Because that's not how it works. Domain members sync their time with their authenticating DC, which is not necessarily the PDCe.
w32tm /config /syncfromflags:domhier /update tells the time service to sync with the domain hierarchy. It does not tell the time service to sync with the PDCe. The domain hierarchy consists of any and every domain controller, unless they're configured not to provide time service.
Based on your comments:
You're misunderstanding time. None of the computers (whether virtual or physical)
get their time from any other computer or time source. All computers
get their time from either their internal RTC (real time clock) or from the hypervisor host (at virtual machine startup). They
sync their time with another computer or time source but they do not
get their time from another computer or time source. Here's my suggestion:
Disable the Hyper-V Time Integration service for all of your domain joined virtual machines.
Sync your Hyper-V host to the domain hierarchy just like any other domain joined computer, whether physical or virtual.
Sync all of your domain joined clients to the domain hierarchy. This includes any and all Domain Controllers that don't hold the PDCe role.
Sync your PDCe Domain Controller to whatever reliable external time source you wish.
I can tell you that I have worked with several Hyper-V deployments of this nature over the past several years with absolutely no time sync issues.