Используя WMI из PowerShell или C# - как я могу получить время удаленного хоста, включая миллисекунды?
Мне нужно получить дату и время удаленного хоста, включая миллисекунды, используя WMI.
Следующее не достаточно хорошо:
Get-WmiObject Win32_UTCTime -ComputerName MY_REMOTE_HOST
Поскольку миллисекунды НЕ реализованы в классе Win32_CurrentTime, который является производным от класса Win32_UTCTime:
миллисекунды
Тип данных: uint32
Тип доступа: только для чтения
Не реализованы.
Это свойство унаследовано от Win32_CurrentTime.
( https://docs.microsoft.com/en-us/previous-versions/windows/desktop/wmitimepprov/win32-currenttime)
Буду признателен за любые другие предложения, чтобы получить эту информацию с помощью WMI из Powershell или C#.
3 ответа
WMI-класс win32_operatingsystem содержит свойство с именем LocalDateTime, которое также содержит миллисекунды. Вы должны конвертировать их, хотя.
Простой пример:
$OS = Get-WmiObject win32_operatingSystem
$OS.ConvertToDateTime($OS.LocalDateTime)
Выходными данными является объект DateTime, который также содержит миллисекунды.
Ответ @bluuf - тот, который вам следует использовать, но в качестве более сложной альтернативы вы можете получить текущую дату / время из классов WMI счетчика производительности, например:
$perfTime = Get-CimInstance -Query "Select * FROM Win32_PerfRawData_PerfOS_Processor WHERE Name = '0'"
(Get-Date "01/01/1601").AddTicks($perfTimeime.Timestamp_Sys100NS)
Попробуйте PowerShell Remoting:
$sess = New-PSSession -Credential (Get-Credential)
$dateTime = Invoke-Command -Session $sess -ScriptBlock { Get-Date -Format "o" }
Чтобы включить удаленное взаимодействие, перейдите по этой ссылке.
Надеюсь, это поможет.