Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Строку в datetime

Ответить
Настройки темы
PowerShell - [решено] Строку в datetime

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566


Конфигурация

Профиль | Отправить PM | Цитировать


Привет!

Помогите, пожалуйста, перевести строку
Код: Выделить весь код
Dec 23 19:03:15 2022 GMT
в datetime с конвертацией GMT в MSK.

Что-то не пойму, как это сделать, а сам PS эту конструкцию не распознаёт.

Пробовал что-то вроде (даже без GMT)
Код: Выделить весь код
$expdate = "Dec 23 19:03:15 2022"
[datetime]::ParseExact("$expdate", "MMM dd HH:mm:ss yyyy", $null)

Исключение при вызове "ParseExact" с "3" аргументами: "Строка не распознана как действительное значение DateTime."
строка:1 знак:1
+ [datetime]::ParseExact("$expdate", "MMM dd HH:mm:ss yyyy", $null)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : FormatException
Проблема ещё, наверное, и в русской винде, потому что
Код: Выделить весь код
get-date -f "MMM dd HH:mm:ss yyyy"
окт 20 17:56:20 2022

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 17:57, 20-10-2022

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
сам PS эту конструкцию не распознаёт. »
Дык, потому как нестандарт... RFC1123 предполагает: ddd, dd MMM yyyy HH:mm:ss GMT
Код: Выделить весь код
get-date -f R
Но таки нестандарт тоже можно обработать:
Код: Выделить весь код
$a = 'Dec 23 19:03:15 2022 GMT'
[datetime]::parseexact($a, 'MMM dd HH:mm:ss yyyy GMT', [system.globalization.cultureinfo]::invariantculture)
# или так:
[datetime]::parseexact($a, 'MMM dd HH:mm:ss yyyy GMT', (new-object cultureinfo("en-US")))

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:13, 20-10-2022 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


Я не нашел такого формата
Код: Выделить весь код
Get-Date $('{0} {3}, {1} {2} {4}' -f 'Dec 23 19:03:15 2022 GMT'.Split())
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:14, 20-10-2022 | #3


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


Спасибо вам большое!

Это вывод curl.exe - я с его помощью пытаюсь собирать информацию о датах окончания действия SSL-сертификатов. Это там такой формат даты.
Код: Выделить весь код
Server certificate:
*  subject: CN=kerberos.io
*  start date: Aug 31 11:26:03 2022 GMT
*  expire date: Nov 29 11:26:02 2022 GMT
*  subjectAltName: host "kerberos.io" matched cert's "kerberos.io"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
А почему я использую сторонний curl.exe - потому что с помощью чистого powershell не всегда удаётся прочесть дату, вот, например, с kerberos.io. Возможно, из-за HTTP/2, не разбирался.

Кстати, в Windows 10 и новее curl.exe поставляется вместе с системой (не путать с алиасом curl к команде Invoke-WebRequest), но он поддерживает меньше возможностей - данных о сертификате SSL от него получить не удаётся.

Код: Выделить весь код
# встроенный в систему
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel
Release-Date: 2022-05-13
Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp 
Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSockets

# взятый с сайта
curl 7.85.0 (x86_64-w64-mingw32) libcurl/7.85.0 OpenSSL/3.0.5 (Schannel) zlib/1.2.13 brotli/1.0.9 zstd/
1.5.2 WinIDN libssh2/1.10.0 nghttp2/1.50.0 ngtcp2/0.9.0 nghttp3/0.7.1 libgsasl/2.2.0
Release-Date: 2022-08-31
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtsp scp 
sftp smb smbs smtp smtps telnet tftp 
Features: alt-svc AsynchDNS brotli gsasl HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz 
MultiSSL NTLM SPNEGO SSL SSPI threadsafe TLS-SRP UnixSockets zstd

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 20:39, 20-10-2022 | #4


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
пытаюсь собирать информацию о датах окончания действия SSL-сертификатов. »
Работу с сертификатами особо не разбирал, но pwershell, вроде бы умеет с ними обходиться... насколько правильно, затрудняюсь сказать, ибо надобности такой не было..
Вот, пару ссылок, для информации, возможно, что-либо пригодится:
https://habr.com/ru/company/t1_cloud/blog/661107/
https://winitpro.ru/index.php/2020/0...sl-sertifikat/

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 05:00, 21-10-2022 | #5


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


Рецепт с Winitpro не работает, т. к. он использует устаревший класс HttpWebRequest - у меня как раз на нём был основан прошлый скрипт, и это сегодня работает через раз.

С Хабра способ работает, там используется класс TcpClient.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 10:25, 21-10-2022 | #6


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Рецепт с Winitpro не работает, т. к. он использует устаревший класс HttpWebRequest »
Да, наверное... его только в powershell v5.1, если только использовать...

-------
scio me nihil scire. Ѫ


Отправлено: 10:50, 21-10-2022 | #7


Аватара для Fors1k

Старожил


Сообщения: 193
Благодарности: 112

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
его только в powershell v5.1, если только использовать »
Зачем, если
Цитата DJ Mogarych:
не работает <...> устаревший класс»
?

Отправлено: 12:48, 21-10-2022 | #8


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1232
Благодарности: 515

Профиль | Отправить PM | Цитировать


Цитата Fors1k:
Зачем, если »
в 5.1 работает... а 5.1 - это то, что предустановлено, сейчас.
Цитата:
Проверка https://winitpro.ru
Сертификат для сайта https://winitpro.ru истечет через 23 дней [11/14/2022 05:59:19]. Подробности:

Cert name: CN=winitpro.ruCert thumbprint: 7A288043CE89BF1E5EBA4C4E01CECB2833E06BD5
Cert effective date: 16.08.2022 5:59:20
Cert issuer: C=US, O=Let's Encrypt, CN=R3
________________

PS_5.1>

-------
scio me nihil scire. Ѫ


Отправлено: 13:20, 21-10-2022 | #9


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6690
Благодарности: 1566

Профиль | Отправить PM | Цитировать


YuS_2, проверьте kubernetes.io

Устаревший класс не для PS, я для .NET.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:39, 21-10-2022 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Строку в datetime

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Java - Поместить строку в строку blackeangel Программирование и базы данных 5 16-06-2017 13:08
PowerShell - [решено] Распарсить datetime pogo Скриптовые языки администрирования Windows 1 09-10-2015 11:31
.NET - Вычислить строку в C# SmallGod Программирование и базы данных 1 26-02-2010 01:19
Интерфейс - Нужен твик -убрать в проводнике "Избранные ссылки", адресную строку и строку поиска Mishechka Microsoft Windows Vista 18 16-09-2008 16:19
разбить строку khvalera Программирование и базы данных 1 06-05-2004 12:48




 
Переход