Преобразование даты ггггммддччмм + 000 - PullRequest
1 голос
/ 08 октября 2019

Я пытался получить сведения о SCCM MP из WMI от Powershell. Это данные, которые я могу получить из WMI, но формат даты другой, и я не могу конвертировать. Возможно, не хватает некоторых знаний.

$query = Get-WmiObject -Query "SELECT * FROM SMS_MPInformation " -Namespace root\ccm\LocationServices -ComputerName "test_vm"

$MP = $query.MP
$Sitecode = $query.SiteCode
$MPLastRequestTime = $query.MPLastRequestTime
$MPLastUpdateTime = $query.MPLastUpdateTime

Вывод, который я получаю, в порядке, но формат даты немного другой.

$MPLastRequestTime = 20191008000158.927000+000

На самом деле так и должно быть.

MPLastRequestTime: 08-Oct-2019 00: 01

Может кто-нибудь посоветовать мне, как я могу преобразовать его в вышеуказанный формат. Инструмент WMIExplorer может конвертировать его, поэтому я знаю, что должен быть какой-то путь.

Ответы [ 2 ]

4 голосов
/ 08 октября 2019

Попробуйте использовать Get-CimInstance. Командлеты -Wmi , тем не менее, исключаются, и CIM должен возвращать DateTime в более удобочитаемом формате.

2 голосов
/ 08 октября 2019

Помимо Ивана Мирчева полезный ответ. вы можете конвертировать метку времени WMI следующим образом:

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local')

Если вам нужна дата в формате UTC, выполните

$wmiTime = '20191008000158.927000+000'
$date = [DateTime]::new((([wmi]"").ConvertToDateTime($wmiTime)).Ticks, 'Local').ToUniversalTime()

Последняя выдаст

08-окт-2019 00: 01: 58

Объяснение:

Несмотря на то, что меткой времени WMI является время UTC, функция ConvertToDateTime() возвращает датув по местному времени , но, к сожалению, для свойства Kind установлено значение «Не указано».

Когда вы выполняете ToLocalTime() для этого метода, тогда предполагает, что это UTC и снова добавляет смещение часового пояса, что приводит к неправильному времени.

Поскольку.Kind свойство доступно только для чтения для объекта DateTime, вам нужно создать новый DateTime, используя преобразованное время WMI, чтобы установить для его свойства Kind значение «Local».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...