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.
EDIT
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.