10 основных команд PowerShell, которые вам нужно знать

Вы когда-нибудь пытались написать код на PowerShell и застревали? Больше не беспокойтесь! Один из лучших способов стать мастером PowerShell – это понять основы. Знание нескольких основных команд PowerShell может сделать вас профессионалом, и вы будете автоматизировать административные задачи более эффективно.

В этом руководстве вы узнаете основные командлеты PowerShell, которые вам нужно знать, чтобы сделать ваш опыт работы с PowerShell более интересным.

Предварительные требования

Этот учебник будет демонстрацией на практике, но у него нет многих предварительных требований. Если вы хотите следовать за нами, любая система (Windows или Linux) с PowerShell 5.1 или выше подойдет. Хотя команды показаны с использованием Windows PowerShell, приведенные ниже примеры работают в PowerShell 7+ на разных платформах.

Получение справочной информации о командах с помощью Get-Help

Вы когда-нибудь писали код как босс без получения помощи? Хотя бы всегда было нужно какое-то руководство при написании кода. Будь то выполнение кода или команд в среде командной строки, пригодится командлет Get-Help.

Давайте начнем это руководство с изучения того, как работает командлет Get-Help.

Команда Get-Help предоставляет вам необходимые руководства для эффективного использования любой команды без ошибок. Рассматривайте это как документацию для каждой из команд PowerShell.

Откройте PowerShell от имени администратора и выполните нижеприведенную команду Get-Help, чтобы просмотреть подробную (-Detailed) информацию о команде, например, о команде Get-ExecutionPolicy.

Get-Help -Name Get-ExecutionPolicy -Detailed
Getting Detailed Information of Commands

Вместо простой подробной информации возможно, вам захочется просмотреть полную информацию о команде. В таком случае добавьте параметр -Full в команду Get-Help.

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

Get-Help Get-Help -Full
Getting Full Information of Commands

Возможно, вам все еще нужны дополнительные примеры, чтобы избежать ошибок при выполнении команды. В этом случае добавьте параметр -Examples, чтобы увидеть примеры написания команды.

Выполните команду Get-Help ниже, чтобы получить примеры (-Examples) использования команды Get-Process.

 Get-Help Get-Process -Examples
Applying -Examples to get help for Get-Process

Получение процессов компьютера с помощью Get-Process

Помните ли вы Диспетчер задач Windows, который отображает все ваши процессы, службы, приложения и все такое? Замечательно! Командлет Get-Process является базовым, но важным командлетом, который дает вам доступ ко всем процессам вашего компьютера всего в нескольких шагах без открытия Диспетчера задач.

Выполните следующую команду, чтобы получить список всех процессов системы в формате таблицы.

Get-Process
Getting All Windows Processes

Когда процесс зависает и замедляет работу вашего компьютера, остановите процесс, направив вывод командлета Get-Process на командлет Stop-Process. Например: выполните Get-Process -Id 1252 | Stop-Process, где -Id 1252 указывает идентификатор процесса, который вы хотите остановить.

Получение истории сеанса PowerShell с помощью Get-History

Может возникнуть необходимость проверить ваши последние команды, например, убедиться, что последняя выполненная команда правильна, или вы действительно выполнили команду. Но есть ли у PowerShell история команд? Да! Команда Get-History возвращает объект всех ваших последних команд в текущей сессии PowerShell.

Запустите команду ниже, чтобы получить список всех недавно выполненных команд в текущей сессии.

Get-History
Getting the commands history of the current session

Если вы предпочитаете просматривать конкретные команды из истории, добавьте параметр -Id, за которым следует номер ID команды из истории. Например, выполните Get-History -Id 2, чтобы увидеть вторую команду в истории.

Отображение системных служб с помощью Get-Service

Как и команда Get-Process, PowerShell также позволяет просматривать все службы, работающие в вашей системе. Команда Get-Service позволяет просматривать все службы, которые могут быть сервером базы данных или приложением, автоматически управляющим яркостью экрана вашего компьютера.

Запустите команду ниже, чтобы получить список всех служб на вашей системе в формате таблицы. С помощью этой команды вы сможете видеть даже остановленные службы.

Get-Service
Getting all available services on the local computer

Возможно, вам нужны службы, которые начинаются с определенного символа. Если это так, добавление символа подстановки (*) сделает дело.

Запустите команду Get-Service ниже, передав первую букву и звездочку (A*) служб, которые вы хотите просмотреть. Добавление символа подстановки позволяет фильтровать все службы, которые не начинаются с буквы ‘A’.

Get-Service A*
Getting all services that start with the letter ‘A’

Запуск фоновых заданий с помощью Start-Job

Написание кодов может быть раздражающим, если еще многое нужно написать, а одна команда занимает вечность. Нет проблем! PowerShell предоставляет командлет для запуска фоновых заданий в вашей сессии. Командлет Start-Job предоставляет среду PowerShell для запуска кода или команд в качестве фоновой задачи без взаимодействия с пользователем.

Запустите команду Start-Job ниже, чтобы запустить фоновую задачу для командлета Get-Command. Запуск фоновой задачи выполняет командлет Get-Command, не отображая вывод на вашей командной строке.

Start-Job -ScriptBlock {Get-Command}
Starting a background job for Get-Command

Поскольку вы работаете с фоновыми заданиями, как проверить, выполняется ли задание или завершено? Запустите командлет Get-Job, чтобы получить все задания в вашей сессии.

Изменение рабочих каталогов с помощью Set-Location

Иногда вам нужно изменить каталоги, например, при запуске сценария или программы из определенного места. Но как изменить каталоги? Позвольте командлету Set-Location помочь вам с этим. Командлет Set-Location устанавливает текущий рабочий каталог в указанный вами каталог в команде.

Запустите код ниже, чтобы установить текущий рабочий каталог в C:\Users\hp\Desktop. Замените hp на имя пользователя вашего компьютера.

Set-Location C:\Users\hp\Desktop

Ниже вы можете видеть в приглашении, что C:\Users\hp\Desktop теперь является рабочим каталогом.

Changing Working Directory

Проверка существования путей с помощью Test-Path

PowerShell может отображать ошибку, если вы пытаетесь получить доступ к файлу, которого не существует. Как этого избежать? Командлет Test-Path позволяет вам проверить, существует ли путь или нет, с его интуитивным синтаксисом.

Теперь создайте папку на рабочем столе, назовите ее NewFolder.

Запустите команду Test-Path ниже, за которой следует путь, который вы хотите протестировать. В этом примере команда проверяет, существует ли путь C:\Users\hp\Desktop\NewFolder.

Test-Path C:\Users\hp\Desktop\NewFolder

Ниже вы можете видеть, что команда вернула значение True, поскольку путь существует. В противном случае вы получите ложный вывод.

Testing if the path exists

Преобразование объекта PowerShell в HTML с помощью ConvertTo-HTML

Если вы предпочитаете организованную форму для ваших данных, конвертируйте их в HTML с помощью cmdlet ConvertTo-Html. Фундаментально, команда принимает файл вывода, который вы хотите конвертировать, и имя файла, под которым вы хотите его сохранить.

Запустите команду ниже, чтобы собрать список всех команд PowerShell (Get-Command) в памяти и конвертировать (ConvertTo-Html) список в файл HTML с именем Command.html.

Файл HTML сохраняется на вашем рабочем столе, поскольку вы ранее изменили рабочий каталог. Чтобы сохранить файл HTML в другом месте, укажите полный путь. Например: Get-Command | ConvertTo-HTML > C:\Temp\Commands.html

# Создает файл Commands.html, содержащий все команды PowerShell
Get-Command | ConvertTo-Html > Commands.html

Экспорт объектов PowerShell в CSV с помощью Export-CSV

Если вы думаете, что отчет в формате CSV будет лучше, чем в HTML, тогда используйте командлет Export-CSV . Аналогично командлету ConvertTo-Html, командлет Export-CSV позволяет вам экспортировать данные в файл CSV.

Выполните команду ниже, чтобы собрать список команд PowerShell (Get-Command), и экспортировать список в файл CSV (Export-CSV) с именем Commands.csv.

Get-Command | Export-CSV Commands.csv

Как и в командлете ConvertTo-Html, вы также можете указать путь экспорта для файла CSV так: Get-Command | Export-CSV C:\Temp\Commands.csv

Откройте файл Commands.csv, и вы увидите что-то вроде того, что ниже. Неплохо, правда?

Opening Exported Commands.csv in Microsoft Excel

Просмотр всех доступных команд PowerShell с помощью Get-Command

Последняя команда PowerShell в списке – это командлет Get-Command . Командлет Get-Command в основном выводит все доступные команды PowerShell, которые вы можете выполнить, в табличном формате. Но, как вы видели на предыдущих примерах, это не все, что Get-Command может делать.

Возможно, вы хотите выбирать cmdlet или псевдонимы выборочно. Если это так, добавьте параметр -CommandType к cmdlet Get-Command, чтобы фильтровать вывод по указанному вами типу команды. Значение параметра -CommandType может быть Alias, Cmdlet или Function.

Запустите команду Get-Command ниже, чтобы перечислить только cmdlet (-CommandType Cmdlet) с именами, начинающимися с ‘G’ (-Name G*).

Get-Command -Name G* -CommandType Cmdlet
Getting all cmdlets that start with the letter ‘G’

Другой способ фильтрации вывода Get-Command – передача его в cmdlet Select-Object. Как вы знаете, объект, возвращаемый cmdlet Get-Command, представлен в формате таблицы. В этой таблице имена столбцов представляют свойства, которые вы можете выбрать из объекта.

Запустите Get-Command ниже, чтобы собрать список всех команд PowerShell и отфильтровать отображение, чтобы показать свойство определения каждой команды (Select-Object -Property Definition).

Get-Command | Select-Object -Property Definition
Property Definition

Заключение

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

Теперь, как вы бы расширили этот новый опыт? Возможно, научитесь писать многострочные команды в сценариях PowerShell, не портя при этом все?

Source:
https://adamtheautomator.com/basic-powershell-commands/