В этой статье описаны функции только что модуля ConvertTime PowerShell, который позволяет конвертировать в объект PowerShell DateTime и обратно, а также временные метки Unix и Windows.
Временные метки Windows
Временная метка Windows - это 18-значное целое число, часто называемое временной меткой Active Directory, а исторически - Windows32 FILETIME или SYSTEMTIME. В PowerShell она также упоминается как FileTime. В Active Directory это значение используется для таких атрибутов, как pwdLastSet, accountExpires, LastLogon, LastLogonTimestamp и LastPwdSet. 18-значная временная метка - это количество 100-наносекундных интервалов (одна миллиардная доля секунды) с 1 января 1601 года UTC (эпоха Windows).
пример 132947402891099830
Временные метки Unix
Временная метка Unix - это количество секунд, прошедших с 1 января 1970 года (полночь UTC/GMT - эпоха Unix), не считая високосных секунд (в ISO 8601: 1970-01-01T00:00:00Z). Часто эти значения встречаются в API для lastUpdatedTime или подобных.
пример 1592001868
Модуль ConvertTime
Модуль был протестирован в Windows PowerShell (5.1) и PowerShell (7.x) на Windows.
Модуль содержит четыре команды (две с дополнительными переключателями для возврата результата преобразования в виде времени UTC):
- Convert-UnixTime
- Convert-WindowsTime
- Get-UnixTime
- Get-WindowsTime
Установка модуля
Установка непосредственно из галереи PowerShell (Powershell 5.x и выше).
Запустите PowerShell с правами администратора и введите следующую команду
1 | install-module -name ConvertTime |
Примеры использования
Перед началом использования, разрешаем текущему пользователю импортмодулей
1 | Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted |
и импортируем модуль
1 | Import-Module ConvertTime |
Convert-UnixTime
Преобразование временной метки Unix в объект PowerShell DateTime относительно местного времени, основанного на системном часовом поясе.
(необязательно) Возвращает DateTime как всемирное координированное время.
1 2 | Convert-UnixTime 1592001868 Convert-UnixTime 1592001868 -UTC |
Convert-WindowsTime
Преобразование из WindowsTime в PowerShell DateTime.
(необязательно) Возвращает DateTime как всемирное координированное время
1 2 | Convert-WindowsTime 132947402891099830 Convert-WindowsTime 132947402891099830 -UTC |
Get-UnixTime
Преобразование времени даты PowerShell в метку времени Unix (Эпоху Linux)
1 2 | Get-Date | Get-UnixTime Get-Unixtime -datetime 'Sunday, 9 October 2022 2:47:48 PM' |
Get-WindowsTime
Преобразование даты-времени PowerShell в метку времени Windows
1 2 | Get-Date | Get-WindowsTime Get-WindowsTime -datetime 'Sunday, 9 October 2022 2:47:48 PM' |
Заключение
ConvertTime это универсальный модуль PowerShell для генерации или преобразования временных меток Unix и Windows в объекты PowerShell DateTime и обратно.