• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Основы Powershell 7 Часть 1

Omega Spur

floppy-диск
Пользователь
Регистрация
25.01.2021
Сообщения
5
Реакции
12
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

Непосредственно процесс установки

1616767085135.png


1616767095769.png


1616767104677.png


1616767112635.png


1616767123357.png


1616767133322.png



Установка успешно завершена

Желательно не ставить галочку “Launch Powershell”, так как нам необходимо установить документацию, а для этого необходимо запускать Powershell от администратора.

1616767146284.png


Если сразу после запуска попробовать вызвать встроенную справку – получим сообщение о том, что она не установлена

1616767400418.png


Если последовать предложенным рекомендациям – получаем ошибку

1616767054914.png


Закрываем оболочку и запускаем ее с правами администратора, после запуска выполняем установку документации следующим образом

Код:
Update-Help -Force -ErrorAction SilentlyContinue

1616767412373.png


Примеры для Get-Command и Get-Help

Get-Help отображает информацию о команде. Чтобы получить помощь по конкретной команде, выполните следующее:

Код:
Get-Help Command-Name

Вы также можете понять, как именно использовать команду, передав флаг -examples:

1616767438988.png


Использование Get-Command

Get-Command получает все команды, доступные для выполнения на текущем компьютере. Самое замечательное в этой команде то, что она позволяет сопоставлять шаблоны следующим образом

Код:
Get-Command Verb-* или Get-Command *-Noun

Запустим Get-Command Get-* для просмотра всех команд начинающихся с Get:

1616767461410.png



Манипуляция объектами

На предыдущих скриншотах вы увидели, что результат каждой команды является объектом. Сейчас я покажу, примеры перенаправлений результатов выполнения команд и использование специальных командлетов для извлечения информации:

Pipeline(|) используется для передачи результатов от одной команды к другой. Основное отличие от других оболочек заключается в том, что вместо передачи текста или строки в команду после команды, оболочка powershell передает объект следующей команде. Как и каждый объект в объектно-ориентированных языках программирования, объект будет содержать методы и свойства. Воспринимайте методы как функции, которые можно применять для вывода результатов команды, а свойства как о переменных в результатах команды.

Чтобы посмотреть, как это работает, передайте результаты команды в командлет Get-Member, например вот так

Код:
Verb-Noun | Get-Member

Рассмотрим пример (Get-Command | Get-Member -MemberType Method):

1616767471781.png



Данный пример показывает, что вы можете использовать как методы, так и свойства

Создание объектов из предыдущих командлетов


Например, вы можете извлечь свойства из вывода команды и создать новый объект, используя команду Select-Object


1616767483554.png



Еще пример совмещения свойств

1616767494910.png


Сортируем и фильтруем объекты

Вы всегда можете использовать фильтр 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

Пример – проверим запущенные процессы

1616767518838.png


Еще немного про сортировку

Часто, команда выдает большое количество информации, и вам может потребоваться сократить и систематизировать отображение информации. Вы делаете это используя «пайп», и перенаправив вывод команды на команду Sort-Object.

Код:
Verb-Noun | Sort-Object

Например, нам необходимо найти полный путь файла secret.txt

Код:
Get-ChildItem -Path C:\ -Include *secret.txt* -File -Recurse -ErrorAction SilentlyContinue

1616767533261.png


Теперь, после того как мы нашли файл – давайте посмотрим его содержимое

Код:
Get-Content "C:\Users\xss\Documents\secret.txt"

1616767544217.png


Давайте посмотрим, сколько всего командлетов установлено в нашей системе

Код:
Get-Command | Where-Object -Parameter CommandType -eq Cmdlet | measure

1616767554316.png


Получим md5 и SHA256 хеш файла secret.txt

Сначала md5, с указанием параметра Алгоритм и затем, SHA256, с праметром по-умолчанию

Код:
Get-FileHash -Path "C:\Users\xss\Documents\secret.txt" -Algorithm MD5

1616767563558.png


Проверим, существует ли путь “C:\Users\xss\Documents\Passwords”

Код:
Test-Path -Path “C:\Users\xss\Documents\Passwords”

1616767577724.png


Скачаем тестовый файл из сети с помощью команды Invoke-WebRequest

Код:
Invoke-WebRequest -Uri "https://speed.hetzner.de/100MB.bin" -OutFile "C:\Users\xss\testfile2"

1616767592593.png


1616767604750.png



Теперь, попробуем декодировать файл, с содержимым в Base64:

1616767618685.png



Продолжение во второй части, спасибо всем за внимание!
 

Вложения

  • 1616766855780.png
    1616766855780.png
    36 КБ · Просмотры: 5
  • 1616766925473.png
    1616766925473.png
    7 КБ · Просмотры: 5
  • 1616766936407.png
    1616766936407.png
    11.7 КБ · Просмотры: 4
  • 1616766963156.png
    1616766963156.png
    7.2 КБ · Просмотры: 4
  • 1616766978658.png
    1616766978658.png
    6.4 КБ · Просмотры: 4
  • 1616766991151.png
    1616766991151.png
    13.7 КБ · Просмотры: 4
  • 1616767011360.png
    1616767011360.png
    4 КБ · Просмотры: 4
  • 1616767024807.png
    1616767024807.png
    10.3 КБ · Просмотры: 4
  • 1616767155488.png
    1616767155488.png
    10.3 КБ · Просмотры: 4


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх