![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] Реализация grep средствами powershell |
|
|
PowerShell - [решено] Реализация grep средствами powershell
|
Пользователь Сообщения: 51 |
У меня есть вот такой вывод одной утилиты
CSP (Type:80) v5.0.10003 KC3 Release Ver:5.0.11455 OS:Windows CPU:AMD64 FastCode:READY:AVX. AcquireContext: OK. HCRYPTPROV: 9023212 GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2012 Cryptographic Service Provider Container name: "Михеева Ольга Алупьевна 1114443106" Signature key is not available. Exchange key is available. HCRYPTKEY: 0x8b7999 Symmetric key is not available. UEC key is not available. Keys in container: exchange key Extensions: OID: 1.2.643.2.2.37.3.10 PrivKey: Not specified - 14.02.2023 13:31:19 (UTC) OID: 1.2.643.2.2.37.3.1 Certificates: 1: DName: E=uc_fk@roskazna.ru, S=г. Москва, INN=007710568760, OGRN=1047797019830, STREET="Большой Златоустински й переулок, д. 6, строение 1", L=Москва, C=RU, O=Федеральное казначейство, CN=Федеральное казначейство OID: 1.2.643.2.2.37.3.3 Certificates: 1: DName: E=dit@minsvyaz.ru, C=RU, S=77 Москва, L=г. Москва, STREET="улица Тверская, дом 7", O=Минкомсвязь Росс ии, OGRN=1047702026701, INN=007710474375, CN=Минкомсвязь России Total: SYS: 0,000 sec USR: 0,000 sec UTC: 0,029 sec [ErrorCode: 0x00000000] из которого мне нужно достать дату чтобы сравнить ее с текущей прибегая к сторонним утилитам я юзал grep где это решалось строкой: grep -Eo "[0-9]{2}\.[0-9]{2}\.[0-9]{4}" в powershell мне не хватает ключа -o чтобы выдернуть только ту часть строки, которая соответствует паттерну как это сделать? вот мой код
chcp 65001 $CSPTest = "C:\Program Files (x86)\Crypto Pro\CSP\csptest.exe" $Conts = . $CSPTest -keys -enum -verifyco $OnlyContainers = $Conts | Select-Object -SkipLast 3 | Select-Object -Skip 2 $CurrentDate = get-date -Format 'dd.MM.yyyy HH:mm:ss' foreach($Container in $OnlyContainers){ $ContInfo = . $CSPTest -keyset -container $Container $ContainerDate = $ContInfo -match '[0-9]{1,2}\.[0-9]{2}\.[0-9]{4}' Write-Host $Container if ($CurrentDate -ge $ContainerDate){ #. $CSPTest -keys -enum -verifyco -deletek -pattern $Container Write-Host -ForegroundColor Green $ContainerDate -NoNewline } else { Write-Host -ForegroundColor Red $ContainerDate -NoNewline } Write-Host " : " -NoNewline Write-Host -ForegroundColor Yellow $CurrentDate } вывод
Абрамова Юлия Ивановна 314122617 PrivKey: Not specified - 13.06.2023 14:57:04 (UTC) : 13.01.2023 14:32:54 ДЕНИНА ЛУЛУМБА ВАСИЛЬЕВНА 1213244259 PrivKey: Not specified - 19.03.2024 17:43:38 (UTC) : 13.01.2023 14:32:54 Астахова Марина Сергеевна 1114442618 PrivKey: Not specified - 14.02.2023 13:26:51 (UTC) : 13.01.2023 14:32:54 Данилова Хрыстина Викторовна 1114443106 PrivKey: Not specified - 14.02.2023 13:31:19 (UTC) : 13.01.2023 14:32:54 желаемый вывод
Абрамова Юлия Ивановна 314122617 13.06.2023 14:57:04 : 13.01.2023 14:32:54 ДЕНИНА ЛУЛУМБА ВАСИЛЬЕВНА 1213244259 19.03.2024 17:43:38 : 13.01.2023 14:32:54 Астахова Марина Сергеевна 1114442618 14.02.2023 13:26:51 : 13.01.2023 14:32:54 Данилова Хрыстина Викторовна 1114443106 14.02.2023 13:31:19 : 13.01.2023 14:32:54 Заранее спасибо |
|
Отправлено: 14:51, 13-01-2023 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата nwss:
$text = @" Абрамова Юлия Ивановна 314115617 PrivKey: Not specified - 13.06.2023 14:57:04 (UTC) : 13.01.2023 14:32:54 ДЕНИНА ЛУЛУМБА ВАСИЛЬЕВНА 1219144259 PrivKey: Not specified - 19.03.2024 17:43:38 (UTC) : 13.01.2023 14:32:54 Астахова Марина Сергеевна 1115102618 PrivKey: Not specified - 14.02.2023 13:26:51 (UTC) : 13.01.2023 14:32:54 Данилова Хрыстина Викторовна 1115103106 PrivKey: Not specified - 14.02.2023 13:31:19 (UTC) : 13.01.2023 14:32:54 "@ $pattern = "[0-9]{2}\.[0-9]{2}\.[0-9]{4}" (sls -inp $text -patt $pattern -all).matches.value Цитата nwss:
$text = @" Абрамова Юлия Ивановна 314115617 PrivKey: Not specified - 13.06.2023 14:57:04 (UTC) : 13.01.2023 14:32:54 ДЕНИНА ЛУЛУМБА ВАСИЛЬЕВНА 1219144259 PrivKey: Not specified - 19.03.2024 17:43:38 (UTC) : 13.01.2023 14:32:54 Астахова Марина Сергеевна 1115102618 PrivKey: Not specified - 14.02.2023 13:26:51 (UTC) : 13.01.2023 14:32:54 Данилова Хрыстина Викторовна 1115103106 PrivKey: Not specified - 14.02.2023 13:31:19 (UTC) : 13.01.2023 14:32:54 "@ $pattern = "[0-9]{2}\.[0-9]{2}\.[0-9]{4}" $text -split "`n"|%{ $_ -replace "^privkey.*?(?=$pattern)" -replace "\s\(utc\)" } |
||
------- Отправлено: 15:19, 13-01-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 15:22, 13-01-2023 | #3 |
Deadooshka Сообщения: 2566
|
Профиль | Отправить PM | Цитировать $ContainerDate у вас булев тип, поэтому сравнение дат не будет работать. Найденная подстрока лежит в $matches[0]
Причём надо проверять $ContainerDate на $true иначе уходить на следующую итерацию с continue, иначе в случае несовпадения будет проверяться последнее совпавшее. |
Последний раз редактировалось Sham, 13-01-2023 в 16:48. Отправлено: 16:41, 13-01-2023 | #4 |
Старожил Сообщения: 250
|
Профиль | Отправить PM | Цитировать еще для этого есть select-string
https://learn.microsoft.com/en-us/po...powershell-7.2 вызывается так write-output $command_output | Select-String $fragment -Context $before,$after |
|
Отправлено: 18:27, 13-01-2023 | #5 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
![]() Готовый рабочий и безопасный скрипт удаления старых контейнеров
# Для powershell ise нужна смена кодировки #chcp 65001 if ([Environment]::Is64BitOperatingSystem){ $CSPTest = "C:\Program Files (x86)\Crypto Pro\CSP\csptest.exe" } else { $CSPTest = "C:\Program Files\Crypto Pro\CSP\csptest.exe" } $RegExpPattern = "[0-9]{2}\.[0-9]{2}\.[0-9]{4} [0-9]{2}\:[0-9]{2}\:[0-9]{2}" $Conts = . $CSPTest -keys -enum -verifyco $OnlyContainers = $Conts | Select-Object -SkipLast 3 | Select-Object -Skip 2 $CurrentDate = (get-date -Format 'dd.MM.yyyy HH:mm:ss') -as [DateTime] foreach($Container in $OnlyContainers){ $ContInfo = . $CSPTest -keyset -container $Container $ContainerDate = (Select-String -InputObject $ContInfo -Pattern $RegExpPattern).matches.value -as [DateTime] if (-Not($ContainerDate -eq $null)){ Write-Host 'Контейнер: ' -NoNewline Write-Host $Container -ForegroundColor Cyan Write-Host 'Действителен до: ' -NoNewline Write-Host -ForegroundColor Yellow $ContainerDate -NoNewline $DateDifference = $ContainerDate - $CurrentDate $LongStr = " (Осталось $($DateDifference.Days) дней $($DateDifference.Hours) часов $($DateDifference.Minutes) минут)" if ($CurrentDate -ge $ContainerDate){ Write-Host $LongStr + '- Удаляем' -ForegroundColor Red . $CSPTest -keys -enum -verifyco -deletek -pattern $Container > $null } else { Write-Host $LongStr -ForegroundColor Green } } else { Write-Host 'Контейнер: ' -NoNewline Write-Host $Container -ForegroundColor Cyan Write-Host 'Без сертификата' -ForegroundColor Magenta } } |
|
Последний раз редактировалось nwss, 17-01-2023 в 17:09. Отправлено: 16:31, 17-01-2023 | #6 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Отлично! Если освоите Custom Objects, будет чудесно.
https://www.google.com/search?q=powe...+Custom+Object |
------- Отправлено: 16:43, 17-01-2023 | #7 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
|
|
Отправлено: 17:11, 17-01-2023 | #8 |
fascinating rhythm Сообщения: 6705
|
Профиль | Отправить PM | Цитировать Полагаю, да, и в будущем очень пригодится.
Можно делать более наглядное и удобное представление данных (таблицы, например), которые потом, например, легко конвертируются в html-отчёты, Excel-документы и прочее. |
------- Отправлено: 17:20, 17-01-2023 | #9 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Тогда встретимся через пол года
![]() |
Отправлено: 17:25, 17-01-2023 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
PowerShell - Отправка письма HTML средствами PowerShell | JimmOnLine | Скриптовые языки администрирования Windows | 6 | 02-07-2019 09:20 | |
PowerShell - [решено] чтение фотографии из AD средствами PowerShell | ANDiv1976 | Скриптовые языки администрирования Windows | 1 | 20-06-2019 11:35 | |
2008 R2 - Включение удаленного доступа средствами powershell через GPO | blackrouz | Windows Server 2008/2008 R2 | 12 | 11-05-2016 13:40 | |
PowerShell - [решено] Печать изображения средствами PowerShell. | IVa_ | Скриптовые языки администрирования Windows | 2 | 24-02-2015 18:29 | |
Конкурс - Руководство по использованию AppLocker средствами PowerShell (Часть 1) | OSZone | Microsoft Windows 7 | 0 | 03-10-2009 21:10 |
|