Ваше руководство по началу работы с одобренными глаголами PowerShell

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

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

Присоединяйтесь и повышайте свои навыки написания сценариев PowerShell!

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

Этот учебник включает практические демонстрации. Если вы хотите следовать за нами, убедитесь, что у вас есть система с запущенным PowerShell 5.1 или более поздней версией. В этом учебнике используется Windows 11 с PowerShell 7.

Получение списка утвержденных глаголов PowerShell

В PowerShell командлеты представляют собой небольшие однофункциональные команды, которые выполняют определенные действия в среде PowerShell.

Каждый командлет в PowerShell имеет уникальное имя, которое следует формату пары глагол-существительное, где:

  • Часть с глаголом в названии описывает действие, которое выполняет командлет. Некоторые общие глаголы, используемые в PowerShell, перечислены ниже:
Verb Function
Get Retrieves information.
Set Changes or updates settings.
New Creates something new.
Remove Deletes or removes something.
  • Часть с существительным в названии определяет сущность или объект, на котором выполняется действие, цель, над которой производится действие. Существительное обычно описывает категорию или тип объекта, с которым взаимодействует командлет, такие как команда, процесс, служба или файл.

Чтобы увидеть все утвержденные глаголы, которые вы можете использовать в своем сценарии:

Выполните следующую команду Get-Verb, чтобы получить полный список утвержденных глаголов PowerShell.

Get-Verb

Ниже приведен только небольшой список глаголов, которые вы можете использовать в своем сценарии.

Retrieving a complete list of approved verbs

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

Get-Verb re*

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

Narrowing down the list of approved verbs

Создание новых ресурсов с помощью глагола New

Вы только что получили список утвержденных глаголов в PowerShell, но как использовать эти глаголы в своем сценарии или при выполнении команд? Вы будете добавлять глагол New перед существительным, представляющим тип ресурса, который вы хотите создать (например, пользователь, файл, служба).

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

Выполните следующую команду New-LocalUser, чтобы создать нового пользователя с именем Джон Смит, паролем (Password123) и установить аккаунт без срока действия (-AccountNeverExpires).

New-LocalUser -Name "John Smith" -AccountNeverExpires -Password (ConvertTo-SecureString -AsPlainText "Password123" -Force
Creating a new resource (user account) via the New verb

Получение информации о ресурсе с помощью глагола Get

Помимо создания новых ресурсов, в PowerShell также есть глагол, который позволяет получать информацию о любых существующих ресурсах. В PowerShell глагол Get обычно используется для получения информации о конкретном ресурсе, таком как ОС, службы, файлы и другие объекты.

Чтобы получить информацию о ресурсе с помощью глагола Get:

Запустите нижеуказанную команду Get-LocalUser, чтобы получить информацию о конкретном локальном пользователе (John Smith).

Get-LocalUser -Name "John Smith"

Ниже показано, что учетная запись пользователя John Smith включена (активна).

Retrieving resource information via the Get verb

Изменение существующих ресурсов с помощью глагола Set

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

Вместо создания ресурсов заново, глагол Set позволяет вам корректировать их, изменяя их свойства или конфигурации.

Чтобы изменить существующие ресурсы с помощью глагола Set:

Выполните следующие команды, чтобы установить значение переменной $myVariable на Hello и изменить значение переменной $myVariable на Hello, World!. Эти команды не выводят результат, но вы проверите изменения на следующем этапе.

# Определите переменную ресурса
$myVariable = "Hello"

# Измените значение существующего переменного ресурса
Set-Variable -Name myVariable -Value "Hello, World!"

Теперь выполните команду Get-Variable ниже, чтобы получить информацию о вашем ресурсе ($myVariable).

Get-Variable -Name myVariable

Как показано ниже, вывод отображает имя переменной и её значение.

Retrieving information about a resource

Запуск действий или вызов команд с использованием глагола Invoke

Вместо ручного выполнения команд, как вы делали в предыдущих примерах, почему бы не автоматизировать их с помощью сценария PowerShell? Как? Глагол Invoke позволяет вам инициировать действия или вызывать команды программно.

С помощью сценария PowerShell и глагола Invoke вы можете выполнить несколько команд PowerShell сразу, не набирая их все в консоли.

Чтобы увидеть, как работают действия при вызове глагола Invoke:

1. Выполните следующую команду Invoke-Expression для вызова команды Get-Date, которая позволяет вам получить текущую дату и время.

Invoke-Expression -Command "Get-Date"

Ниже приведен успешный запуск команды Get-Date через глагол Invoke.

Triggering a command via the Invoke verb

2. Затем создайте файл сценария PowerShell (например, InvokeVerbDemo.ps1) с помощью выбранного вами редактора кода и заполните следующий код.

Этот код отображает (Write-Host) приветственное сообщение и вызывает командлет Get-Service, чтобы перечислить все службы в вашей системе.

# Отобразить приветственное сообщение
Write-Host "Welcome to the Invoke Example!"

# Вызвать командлет Get-Service
Invoke-Command -ScriptBlock { Get-Service }

3. Теперь выполните следующие команды для вызова (Invoke-Expression) вашего сценария PowerShell (InvokeVerbDemo.ps1). Замените значение переменной $scriptPath на путь к вашему файлу сценария.

$scriptPath = "C:\PowerShellScripts\InvokeVerbDemo.ps1"
Invoke-Expression -Command $scriptPath

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

Invoking a script via the Invoke verb

4. Вместо простых команд напишите повторно используемую функцию (например, Invoke-MyTask), которую вы можете вызывать в любое время, как показано ниже. По сути, функции улучшают поддерживаемость и повторное использование ваших сценариев PowerShell.

В этом примере функция Invoke-MyTask инкапсулирует команды для выполнения следующего при вызове:

  • Отображает (Write-Host) строку Executing MyTask... на консоли.
  • Получает список всех процессов (Get-Process) и выбирает только (Select-Object) свойства Name и CPU для каждого процесса.
# Определите пользовательскую функцию, используя глагол Invoke
function Invoke-MyTask {
    # Ваша пользовательская задача здесь
    Write-Host "Executing MyTask..."
    Get-Process | Select-Object Name, CPU
}
Defining a PowerShell function

5. Наконец, выполните следующую команду, чтобы вызвать вашу функцию (Invoke-MyTask).

Invoke-Expression -Command Invoke-MyTask

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

Invoking a function

Проверка ресурсов с помощью глагола Test

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

Используя глагол Test, вы можете быстро проверить, является ли данное условие истинным или ложным, что позволяет выполнять различные действия в зависимости от результата. В этом примере вы проверите, существует ли файл с помощью глагола Test.

Выполните код ниже, чтобы проверить (Test-Path), существует ли файл (C:\MyFolder\example.txt) по указанному пути $filePath, и выведите сообщение в зависимости от результата.

# Определить путь к файлу.
$filePath = "C:\MyFolder\example.txt"

# Проверить, существует ли файл, и вывести сообщение в зависимости от результата
if (Test-Path $filePath) {
    Write-Host "The file exists at $filePath."
}
else {
    Write-Host "The file does not exist at $filePath."
}
Validating a resource via the Test verb

Заключение

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

Этот учебник – всего лишь начало вашего пути к тому, чтобы стать опытным пользователем PowerShell. Почему бы не изучить другие утвержденные глаголы, такие как Экспорт, Импорт, Сортировка) и глаголы жизненного цикла (такие как Начать, Остановить)? Повысьте свои навыки PowerShell уже сегодня!

Source:
https://adamtheautomator.com/powershell-approved-verbs/