Powershell - это среда сценариев и оболочек Windows, построенная с использованием .NET фреймворка. Это также позволяет Powershell выполнять .NET функции непосредственно из своей оболочки. Большинство команд Powershell, называемых командами, написаны в .NET. В отличие от других языков сценариев и сред оболочки, результаты выполнения этих команд являются объектами, что делает Powershell в некоторой степени объектно-ориентированным. Это также означает, что выполнение команд позволяет вам выполнять действия с выходным объектом (что делает удобной передачу результатов выполнения одной команды другой). Обычный формат команды представлен с помощью Verb-Noun; например, команда для перечисления команд называется Get-Command
Общие команды:
• Get
• Start
• Stop
• Read
• Write
• New
• Out
Примеры команд и документация
Устанавливаем последнюю версию
https://docs.microsoft.com/en-us/po...owershell-core-on-windows?view=powershell-7.1
https://docs.microsoft.com/en-us/po...owershell-core-on-windows?view=powershell-7.1
Я буду устанавливать версию 7.1.1
Скачиваем установщик из официального репозитория
https://github.com/PowerShell/PowerShell/releases/download/v7.1.1/PowerShell-7.1.1-win-x64.msi
Непосредственно процесс установки
Установка успешно завершена
Желательно не ставить галочку “Launch Powershell”, так как нам необходимо установить документацию, а для этого необходимо запускать Powershell от администратора.
Если сразу после запуска попробовать вызвать встроенную справку – получим сообщение о том, что она не установлена
Если последовать предложенным рекомендациям – получаем ошибку
Закрываем оболочку и запускаем ее с правами администратора, после запуска выполняем установку документации следующим образом
Примеры для Get-Command и Get-Help
Get-Help отображает информацию о команде. Чтобы получить помощь по конкретной команде, выполните следующее:
Вы также можете понять, как именно использовать команду, передав флаг -examples:
Использование Get-Command
Get-Command получает все команды, доступные для выполнения на текущем компьютере. Самое замечательное в этой команде то, что она позволяет сопоставлять шаблоны следующим образом
Запустим Get-Command Get-* для просмотра всех команд начинающихся с Get:
Манипуляция объектами
На предыдущих скриншотах вы увидели, что результат каждой команды является объектом. Сейчас я покажу, примеры перенаправлений результатов выполнения команд и использование специальных командлетов для извлечения информации:
Pipeline(|) используется для передачи результатов от одной команды к другой. Основное отличие от других оболочек заключается в том, что вместо передачи текста или строки в команду после команды, оболочка powershell передает объект следующей команде. Как и каждый объект в объектно-ориентированных языках программирования, объект будет содержать методы и свойства. Воспринимайте методы как функции, которые можно применять для вывода результатов команды, а свойства как о переменных в результатах команды.
Чтобы посмотреть, как это работает, передайте результаты команды в командлет Get-Member, например вот так
Рассмотрим пример (Get-Command | Get-Member -MemberType Method):
Данный пример показывает, что вы можете использовать как методы, так и свойства
Создание объектов из предыдущих командлетов
Например, вы можете извлечь свойства из вывода команды и создать новый объект, используя команду Select-Object
Еще пример совмещения свойств
Сортируем и фильтруем объекты
Вы всегда можете использовать фильтр Where-Object для того, чтобы отфильтровать вывод на основе выбранных свойств
Формат команды
И
Вторая команды в данном примере использует оператор $_ для итерации через каждый объект, переданный в команду Where-Object.
Документация
https://docs.microsoft.com/en-us/po...ershell.core/where-object?view=powershell-7.1
Пример – проверим запущенные процессы
Еще немного про сортировку
Часто, команда выдает большое количество информации, и вам может потребоваться сократить и систематизировать отображение информации. Вы делаете это используя «пайп», и перенаправив вывод команды на команду Sort-Object.
Например, нам необходимо найти полный путь файла secret.txt
Теперь, после того как мы нашли файл – давайте посмотрим его содержимое
Давайте посмотрим, сколько всего командлетов установлено в нашей системе
Получим md5 и SHA256 хеш файла secret.txt
Сначала md5, с указанием параметра Алгоритм и затем, SHA256, с праметром по-умолчанию
Проверим, существует ли путь “C:\Users\xss\Documents\Passwords”
Скачаем тестовый файл из сети с помощью команды Invoke-WebRequest
Теперь, попробуем декодировать файл, с содержимым в Base64:
Продолжение во второй части, спасибо всем за внимание!
Общие команды:
• Get
• Start
• Stop
• Read
• Write
• New
• Out
Примеры команд и документация
Устанавливаем последнюю версию
https://docs.microsoft.com/en-us/po...owershell-core-on-windows?view=powershell-7.1
https://docs.microsoft.com/en-us/po...owershell-core-on-windows?view=powershell-7.1
Я буду устанавливать версию 7.1.1
Скачиваем установщик из официального репозитория
https://github.com/PowerShell/PowerShell/releases/download/v7.1.1/PowerShell-7.1.1-win-x64.msi
Непосредственно процесс установки
Установка успешно завершена
Желательно не ставить галочку “Launch Powershell”, так как нам необходимо установить документацию, а для этого необходимо запускать Powershell от администратора.
Если сразу после запуска попробовать вызвать встроенную справку – получим сообщение о том, что она не установлена
Если последовать предложенным рекомендациям – получаем ошибку
Закрываем оболочку и запускаем ее с правами администратора, после запуска выполняем установку документации следующим образом
Код:
Update-Help -Force -ErrorAction SilentlyContinue
Примеры для Get-Command и Get-Help
Get-Help отображает информацию о команде. Чтобы получить помощь по конкретной команде, выполните следующее:
Код:
Get-Help Command-Name
Вы также можете понять, как именно использовать команду, передав флаг -examples:
Использование Get-Command
Get-Command получает все команды, доступные для выполнения на текущем компьютере. Самое замечательное в этой команде то, что она позволяет сопоставлять шаблоны следующим образом
Код:
Get-Command Verb-* или Get-Command *-Noun
Запустим Get-Command Get-* для просмотра всех команд начинающихся с Get:
Манипуляция объектами
На предыдущих скриншотах вы увидели, что результат каждой команды является объектом. Сейчас я покажу, примеры перенаправлений результатов выполнения команд и использование специальных командлетов для извлечения информации:
Pipeline(|) используется для передачи результатов от одной команды к другой. Основное отличие от других оболочек заключается в том, что вместо передачи текста или строки в команду после команды, оболочка powershell передает объект следующей команде. Как и каждый объект в объектно-ориентированных языках программирования, объект будет содержать методы и свойства. Воспринимайте методы как функции, которые можно применять для вывода результатов команды, а свойства как о переменных в результатах команды.
Чтобы посмотреть, как это работает, передайте результаты команды в командлет Get-Member, например вот так
Код:
Verb-Noun | Get-Member
Рассмотрим пример (Get-Command | Get-Member -MemberType Method):
Данный пример показывает, что вы можете использовать как методы, так и свойства
Создание объектов из предыдущих командлетов
Например, вы можете извлечь свойства из вывода команды и создать новый объект, используя команду Select-Object
Еще пример совмещения свойств
Сортируем и фильтруем объекты
Вы всегда можете использовать фильтр Where-Object для того, чтобы отфильтровать вывод на основе выбранных свойств
Формат команды
Код:
Verb-Noun | Where-Object -Property PropertyName -operator Value
И
Код:
Verb-Noun | Where-Object {$_.PropertyName -operator Value}
Вторая команды в данном примере использует оператор $_ для итерации через каждый объект, переданный в команду Where-Object.
Документация
https://docs.microsoft.com/en-us/po...ershell.core/where-object?view=powershell-7.1
Пример – проверим запущенные процессы
Еще немного про сортировку
Часто, команда выдает большое количество информации, и вам может потребоваться сократить и систематизировать отображение информации. Вы делаете это используя «пайп», и перенаправив вывод команды на команду Sort-Object.
Код:
Verb-Noun | Sort-Object
Например, нам необходимо найти полный путь файла secret.txt
Код:
Get-ChildItem -Path C:\ -Include *secret.txt* -File -Recurse -ErrorAction SilentlyContinue
Теперь, после того как мы нашли файл – давайте посмотрим его содержимое
Код:
Get-Content "C:\Users\xss\Documents\secret.txt"
Давайте посмотрим, сколько всего командлетов установлено в нашей системе
Код:
Get-Command | Where-Object -Parameter CommandType -eq Cmdlet | measure
Получим md5 и SHA256 хеш файла secret.txt
Сначала md5, с указанием параметра Алгоритм и затем, SHA256, с праметром по-умолчанию
Код:
Get-FileHash -Path "C:\Users\xss\Documents\secret.txt" -Algorithm MD5
Проверим, существует ли путь “C:\Users\xss\Documents\Passwords”
Код:
Test-Path -Path “C:\Users\xss\Documents\Passwords”
Скачаем тестовый файл из сети с помощью команды Invoke-WebRequest
Код:
Invoke-WebRequest -Uri "https://speed.hetzner.de/100MB.bin" -OutFile "C:\Users\xss\testfile2"
Теперь, попробуем декодировать файл, с содержимым в Base64:
Продолжение во второй части, спасибо всем за внимание!
Вложения
-
1616766855780.png36 КБ · Просмотры: 5 -
1616766925473.png7 КБ · Просмотры: 5 -
1616766936407.png11.7 КБ · Просмотры: 4 -
1616766963156.png7.2 КБ · Просмотры: 4 -
1616766978658.png6.4 КБ · Просмотры: 4 -
1616766991151.png13.7 КБ · Просмотры: 4 -
1616767011360.png4 КБ · Просмотры: 4 -
1616767024807.png10.3 КБ · Просмотры: 4 -
1616767155488.png10.3 КБ · Просмотры: 4