Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » PowerShell

Модерирует : KLASS, IFkO

KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

   

Uriu

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Версии

PowerShell 1.0 -  На текущий момент совершенно неактуальная версия, интересная только для истории. /Прямые ссылки/
PowerShell 2.0 и WinRM 2.0 - Последняя версия, работающая на Windows XP и Windows 2003 (Ещё) /Прямые ссылки/
PowerShell 3.0 (Windows Management Framework 3.0)
PowerShell 4.0 (Windows Management Framework 4.0)
PowerShell 5.0 (Windows Management Framework 5.0)
PowerShell 5.1 (Windows Management Framework 5.1)
PowerShell Core 6.0 (не заменяет PowerShell 5.1)



Ассоциация

Что бы ассоциировать скрипты с PowerShell, аналогично выполнению .bat/.cmd-файлов
нужно в командной строке набрать следующую команду(ы)
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\system32\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версии 1.0-5.1 для 32-битных ОС: ftype microsoft.powershellscript.1=%windir%\sysWOW64\windowspowershell\v1.0\powershell.exe -file "%1"  
%*
 
Версия 6.0 дя 32-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files (86)\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*
Версия 6.0 дя 64-битной ОС: ftype microsoft.powershellscript.1="C:\Program Files\PowerShell\6.0.0\pwsh.exe"  -file "%1" %*



вопрос о подписи скриптов

Что бы PowerShell не задавал вопрос о том, что скрипты не подписаны, ввести в нем команду
set-executionpolicy unrestricted
или в командной строке
powershell Set-ExecutionPolicy Unrestricted -force
(для этих 2-х действий требуются административные права)



Прочее


  • Если используете "белый список" в брандмауэре Windows, то для работы сценариев в сети необходимо создать 2 исходящих правила для svchost.exe и PowerShell.exe.
  • В отличие от батников кодировка скриптов на PowerShell должна быть 1251 (ANSI)




Расширение возможностей PowerShell
Функции
* Write-Color
* PowerTab --- Расширение функций клавиши Tab
Провайдеры
Готовые скрипты
* Ошибки и предупреждения в журнале событий по электронной почте (в4.0)
 


Работа со сценариями в Windows PowerShell
Раздел в MSDN
Краткие справочники по Windows PowerShell 3.0 (english)
Windows PowerShell Франк Кох (БЕРН)  Разработчик и пропагандист платформы. На русском языке в формате pdf и doc

Всего записей: 340 | Зарегистр. 25-11-2004 | Отправлено: 07:13 23-03-2006 | Исправлено: KapralBel, 09:31 29-01-2018
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Упс... откуда мне знать, какой левый, допустим, выдает у чела это в событиях
Код события:   36882  
Источник:      Schannel
А мелкие говорят, что надо удалять сертификат, а какой не оповестили.
Я про утилиту (Sigcheck) от Руссиновича вякнул в теме про вынь , а потом про пошик вспомнил... это Фсе, что мне известно.

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 16:10 12-09-2017 | Исправлено: KLASS, 16:13 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS

Цитата:
А мелкие говорят, что надо удалять сертификат, а какой не оповестили.  

Вот так?

Цитата:
 
Поставщик Schannel создает список доверенных центров сертификации, выполняя поиск в хранилище доверенных корневых центров сертификации на локальном компьютере. Эта ошибка регистрируется, если Schannel обнаруживает сертификат, выданный недоверенным центром сертификации.
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:24 12-09-2017 | Исправлено: LevT, 16:31 12-09-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
А по русски? То что нужно знать это понятно (может быть, когда-нибудь), но а, если не ведаешь?
Ну должен пошик такую фигню выдать, это очевидно... люди спрашивают,
а я в теме по выни сторонние утилиты предлагаю... не айс как то, модер правила нарушает )
Долой все стороннее, учимся решать проблемы средствами системы.
А ты как хотел поднять пошик на форуме? Только личными примерами... иначе запинают, как, впрочем, и в жизни.

Цитата:
Поставщик Schannel создает список доверенных центров сертификации, выполняя поиск в хранилище доверенных корневых центров сертификации на локальном компьютере.

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

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 16:35 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Судя по твоей ссылке, неправильный сертификат затесался тут
"Cert:\LocalMachine\Root\" | Get-GhildItem
 
Попробуй вывод на своей проблемной машине слить в | Test-Certificate -Verbose
(у меня возвращает просто True)

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 16:50 12-09-2017 | Исправлено: LevT, 16:53 12-09-2017
KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
Опять упс...
Чел уже утиль от Руссиновича заюзал и у него она что то обновила, по его словам
ошибок пока нет, вот три поста, ну и сам понимаешь, проверить то негде. (
Поздно я сообразил, виноват.
 
Добавлено:
А давай без сообщений системы )
Умерла она, как проверить локальный центр сертификации

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 16:59 12-09-2017 | Исправлено: KLASS, 17:08 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KLASS
не понимаю твоего вопроса
Попробуй-ка сам сформулировать нужную тебе "трубу".

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 17:37 12-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

 
"Cert:\LocalMachine\Root\" | Get-ChildItem - результат на скрине справа.
 
Get-ChildItem -Path Cert:\localMachine\My | Test-Certificate - там у меня ничего, скрин не делал.
 
Get-ChildItem -Path Cert:\localMachine\Root | Test-Certificate - результат на скрине слева.
 
Ниже отсортированные по дате тем самые 4 сертификата: 3 верхние - истёк срок действия, нижний - отозван выдавшим его центром сертификации.

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 22:33 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Искомая труба:  

взять нужные сертификаты (например из LocalMachine\Root)
        XОЧУ отфильтровать недействительные
               и удалить их  

 
Кто осилит написать продвинутую функцию-командет (фильтр недействительных сертификатов)
Get-Invalid (по образцу Get-Newer, несколько страниц назад)
 
 
Добавлено:
 
function Get-Invalid {
[CmdletBinding()]
[OutputType([System.Security.Cryptography.X509Certificates.X509Certificate2])]
param(
    [Parameter(ValueFromPipeline)]
    [System.Security.Cryptography.X509Certificates.X509Certificate2[]]$certs
)
process {
    foreach ($cert in $certs) {
          if -not ($cert | Test-Certificate) {
               Write-Output $cert  
          }
    }
}
}
 
написано прямо сюда (в пошике посмотрел только дотнетовский тип)
Отлаживайте!
 
 
Добавлено:
 
"Cert:\LocalMachine\Root\" | Get-ChildItem   ==    Get-ChildItem -Path "Cert:\LocalMachine\Root\"
 
 $cert | Test-Certificate                                ==     Test-Certificate  -Cert $cert

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 22:49 12-09-2017 | Исправлено: LevT, 23:24 12-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
 

Цитата:
Отлаживайте!

 
if (-not ($cert | Test-Certificate))
 

Код:
 
function Get-Invalid {  
 [CmdletBinding()]  
 [OutputType([System.Security.Cryptography.X509Certificates.X509Certificate2])]  
 param(  
     [Parameter(ValueFromPipeline)]  
     [System.Security.Cryptography.X509Certificates.X509Certificate2[]]$certs  
 )  
 process {  
     foreach ($cert in $certs) {  
           if (-not ($cert | Test-Certificate)) {  
                Write-Output $cert  
           }  
     }  
 }  
 }
 

 
Отрабатывает без ошибок и сообщений. Так и должно быть?

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 23:14 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Дык это чистая функция ))
Ей надо входные данные скормить
 
Добавлено:
 
Get-Invalid (Get-ChildItem -Path "Cert:\LocalMachine\Root\")
 
или что то же самое  
 

Код:
 
"Cert:\LocalMachine\Root\" | Get-ChildItem |  
                                                       Get-Invalid  |    
                                                                 Remove-Item -WhatIf

 

 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 23:20 12-09-2017 | Исправлено: LevT, 12:22 13-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
LevT
 

 
Get-Invalid (Get-ChildItem -Path "Cert:\LocalMachine\Root\") - слева
"Cert:\LocalMachine\Root\" | Get-ChildItem | Get-Invalid  | Remove-Item -WhatIf - справа
 
Но сертификаты не удалились

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 23:51 12-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Но сертификаты не удалились

Это потому что я умышленно добавил -WhatIf  
 
Можно ещё потом подправить тело функции внутри цикла, чтобы не гадила лишней информацией и красными "ошибками".
 
try {
    $cert | Test-Certificate -ErrorAction Stop | Out-Null
} catch {
    $cert | Write-Output
}  

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 00:00 13-09-2017 | Исправлено: LevT, 10:57 13-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
WhatIf - Предназначен для эмуляции выполнения команды и вывода информации, о том, что бы случилось, если выполнить данную команду без этого параметра.

 
Понятно    
 
 
Добавлено:

Цитата:
Можно ещё потом подправить функцию внутри, чтобы не гадила лишней информацией и ошибками.

Можно, но ИМХО - пусть гадит.
 

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 00:02 13-09-2017 | Исправлено: Rwd, 00:05 13-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ИМХО - пусть гадит.

 
Для сбора подобной инфы в v5 добавили Write-Information

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 00:05 13-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
чтобы не гадила лишней информацией и красными "ошибками"


Код:
 
function Get-Invalid {  
  [CmdletBinding()]  
  [OutputType([System.Security.Cryptography.X509Certificates.X509Certificate2])]  
  param(  
      [Parameter(ValueFromPipeline)]  
      [System.Security.Cryptography.X509Certificates.X509Certificate2[]]$certs  
  )  
  process {  
      foreach ($cert in $certs) {  
           try {  
               $cert | Test-Certificate -ErrorAction Stop | Out-Null  
           } catch {  
               $cert | Write-Output  
           }    
      }  
  }  
  }
 

 
Get-Invalid (Get-ChildItem -Path "Cert:\LocalMachine\Root\") >> d:\bad_cert.txt - сохранить на память    
и Get-Invalid (Get-ChildItem -Path "Cert:\LocalMachine\Root\") | Remove-Item -WhatIf  
 

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 12:17 13-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Замечу, что я почти не включал мозги и совсем не гуглил.
 
Творческие достижения, которыми стали бы поводом для гордости - они не тут, а в гораздо более сложных штуках.  
К которым можно наконец приступать, благодаря тому что такие вот упражнения решаются "конвейерным методом" и не представляют проблемы.
 
Сложные штуки становится проще,  
потому что из их сложности вычитается вся та не-такая-уж-сложность, которую можно упрятать в конвейер/трубу.

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:28 13-09-2017
Rwd

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
О сложности говорить не готов, опыта меньше суток. Основную пользу пока вижу в отказе от стороннего софта, это важно.

Всего записей: 623 | Зарегистр. 11-11-2016 | Отправлено: 12:40 13-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересно
 тут кто-нибудь заметил, что в перспективе "инженерную" или "мАстерскую" часть можно в значительной мере поручить компьютеру?
(написать молотилку с нужными типами входов и выхода задача вполне рутинная)
 
Людям остаются:  
1) постановка задачи (подбор трубы)
2) правильный выбор командлетов, воздействующих на окружающий мир.
3) ответственность за результат.
 
 
Добавлено:
 
Rwd
Не обращайте внимания: это я продолжаю убеждать здешних завсегдатаев )

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:40 13-09-2017
2as

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Получить список истёкших сертификатов с помощью PowerShell 2.0

Код:
Set-Location cert:
Get-ChildItem -Recurse | where { $_.notafter -le (get-date).AddDays(75) -AND $_.notafter -gt (get-date)} | select thumbprint, subject

подробности здесь :

Всего записей: 3482 | Зарегистр. 09-09-2003 | Отправлено: 12:52 13-09-2017 | Исправлено: 2as, 13:03 13-09-2017
LevT



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rwd

Цитата:
 >> d:\bad_cert.txt

 
В отличие от bash и cmd перенаправление вывода имеет ограниченное применение: его результат используем только для чтения человеческими глазами.
Если есть хотя бы гипотетический шанс, что этот файлик будет скармливаться программе (любой) - то так лучше не делать, потому что теряется структура.
 
Есть Export-, например Csv.
 
 
Добавлено:
2as

Цитата:
Получить список истёкших сертификатов с помощью PowerShell 2.0  

 
только ЗАРУБИТЬ НА НОСУ, что скоро он последует вслед за XP - и когда с его использованием возникнут проблемы, ТЕРПЕТЬ МОЛЧА.
 
Ну или завести отдельный раздел - "клуб дауншифтеров" - что гуманнее и правильнее.
 
 

Всего записей: 17126 | Зарегистр. 14-10-2001 | Отправлено: 12:54 13-09-2017
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Активные темы » PowerShell
KLASS (06-03-2018 00:43): Объединение тем по сценариям: Сценарии Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru