Можно. Конкретнее могу подсказать только по мониторам: есть два способа - по EDID (в реестре), и по Get-WmiObject WMIMonitorID -Namespace root\wmi (для powershell v2 есть тут код:
https://social.technet.microsoft.com/Forums/script... ), для v1 не совсем работает, нужно чуть менять.
Проблема в том, что в winxp можно по EDID и дл всех, вплоть до win10. В win10 в реестре убрали подветвь Control, по наличию которой можно определить активный (подключенный сейчас) монитор, и можно только по WMIMonitorID, а в winxp и вовсе нет WMIMonitorID - так что только по EDID.
Конкретику можно нагуглить. Всё это можно и удалённо, и локально получить.
Про мышки-клавы не пробовал, не было надобности, но в том же WMI всяких сведений полно, думаю, будет и про них. А уж через что получать - через powershell или утилитой gwmi, или есть ещё devid (если не ошибся в написании) - это диспетчер устройств, только консольный вариант, локально и при наличии прав админа - всё что угодно можно посмотреть (насчёт серийников не уверен, возможно, и нет таких там возможностей, да их вроде бы USB HID и не показывают, поправьте если не так).