Используя 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" }

Чтобы включить удаленное взаимодействие, перейдите по этой ссылке.

Надеюсь, это поможет.

Другие вопросы по тегам