Базовый синтаксис PowerShell
PowerShell — это не просто инструмент командной строки; это ещё и полноценный язык сценариев. Изучение его базового синтаксиса — важный первый шаг, как и изучение нового языка программирования.
В этом разделе подробно рассматриваются самые базовые элементы синтаксиса PowerShell, включая переменные, комментарии, типы данных, операторы, условные конструкции, циклы и многое другое, что закладывает прочную основу для последующего написания сценариев.
1. Комментарии
Комментарии в PowerShell похожи на комментарии в большинстве языков программирования. Они служат для пояснения кода и не выполняются.
Однострочные комментарии начинаются с#:
# 这是一个单行注释 Write-Output "Hello, PowerShell"
Многострочные комментарии обрамляются<#и#>:
<# This is a multi-line comment Can be used for documentation #>
2. Переменные
Определение переменных
В PowerShell переменные начинаются с$символа $, без необходимости заранее объявлять тип:
$name = "Alice" $age = 25
Использование переменных
Write-Output "Name: $name"
Также можно использовать интерполяцию строк:
Write-Output "User: $($name), Age: $($age)"
3. Типы данных
PowerShell — это язык со слабой типизацией, но за каждой переменной стоит соответствующий тип .NET.
| Type | Пример |
|---|---|
| String | $str = "Hello" |
| Integer | $num = 123 |
| Decimal | $pi = 3.14 |
| Boolean | $isTrue = $true |
| Массив | $arr = @(1, 2, 3) |
| Хеш-таблица | $h = @{Name="Tom"; Age=30} |
Вы можете использовать.GetType()чтобы просмотреть тип переменной:
$str.GetType().Name # String
4. Операторы
| Категория | Пример | Описание |
|---|---|---|
| Арифметические операции | + - * / % |
Основные математические операции |
| Операции сравнения | -eq -ne -lt -gt |
Равно, не равно, меньше, больше |
| Логические операции | -and -or -not |
Логические операторы |
| String | -like -match -replace |
Сопоставление с образцом и замена |
| Операции проверки вхождения | -in -contains |
Проверки коллекций |
Пример:
5 -eq 5 # True "abc" -like "a*" # True
5. Условные операторы
Оператор if
if ($age -ge 18) {
Write-Output "成年人"
} else {
Write-Output "未成年人"
}
if-elseif-else
if ($score -ge 90) {
"优秀"
} elseif ($score -ge 60) {
"及格"
} else {
"不及格"
}
6. Структуры циклов
цикл for
for ($i = 1; $i -le 5; $i++) {
Write-Output "第 $i 次循环"
}
Цикл foreach
$colors = @("Red", "Green", "Blue")
foreach ($color in $colors) {
Write-Output "颜色:$color"
}
цикл while
$count = 0
while ($count -lt 3) {
Write-Output $count
$count++
}
7. Определения функций
PowerShell позволяет определять пользовательские функции со следующим синтаксисом:
function Say-Hello {
param([string]$name)
Write-Output "Hello, $name!"
}
Say-Hello -name "PowerShell"
Также можно использовать более краткий синтаксис:
function Square($x) { return $x * $x }
Square 5 # 输出 25
8. Обработка ошибок
Используйтеtry {} catch {}блок для обработки инструкций, которые могут вызвать ошибки:
try {
Get-Item "C:\NotExist.txt"
} catch {
Write-Output "找不到文件"
}
9. Базовый формат файла скрипта
Файлы скриптов PowerShell используют.ps1расширение .ps1. Вы можете создавать их с помощью VS Code или Notepad:
# hello.ps1 $name = "World" Write-Output "Hello, $name"
Запустите его в PowerShell:
.\hello.ps1
Другие расширенияПримечание: если скрипт не выполняется, проверьте политику выполнения (
Get-ExecutionPolicy). При необходимости используйтеSet-ExecutionPolicyчтобы разрешить запуск сценариев.