Лучший справочник по PowerShell
Ищете хороший шпаргалку по PowerShell? Тогда вы находитесь в правильном месте. Я работаю с PowerShell последние 10 лет. За это время я записал самые полезные команды, операторы или полезные команды во многих местах, просто чтобы напомнить о них.
Но я уже потратил некоторое время на создание лучшей памятки по PowerShell. Эта памятка предназначена не только для новичков, но и опытные пользователи также найдут в ней большую ценность.
В этом справочном листе вы найдете все операторы, советы по работе с переменными, операторы управления потоком (if-else, циклы и т. д.), а также коллекции и хеш-таблицы. Я также добавил новые тернарные операторы PowerShell 7 и оператор нулевого объединения.
Скачать шпаргалку по PowerShell
Чтобы получить свою копию шпаргалки, просто заполните форму ниже, и вы получите PDF-версию, которую сможете распечатать на почте.
Большинство команд также объяснены на этом сайте, просто используйте функцию поиска в верхнем правом углу, чтобы быстро найти конкретную команду. Я также кратко объясню различные пункты в этой статье для вашего удобства.
Хорошо знать
В первом разделе на листе содержатся полезные команды. Одной из моих самых часто используемых команд является функция отображения всех параметров. Вы можете сделать это, нажав Ctrl +Space после того, как вы ввели командлет.
Чтобы сделать это еще проще, я рекомендую добавить следующую команду в ваш профиль PowerShell. Таким образом, вам нужно будет только дважды нажать Tab, чтобы просмотреть все возможные параметры.
Set-PSReadlineKeyHandler -Key Tab -Function CompleteТакже командлет Get-History лучше, чем нажатие клавиши стрелки вверх, чтобы найти команду, которую вы использовали несколько минут назад. Обязательно попробуйте это.
Операторы
PowerShell имеет много операторов, как и любой другой язык программирования или сценариев, которые вы можете использовать. На таблице вы найдете наиболее часто используемые из них для вашего удобства. Я сгруппировал аналоги операторов вместе, чтобы сэкономить пространство.
$a += 5or$a -= 5Добавить и присвоить или вычесть и присвоить
$a *= 2or$a /= 2Умножить и присвоить или Разделить и присвоить
2 -eq $aor2 -ne $aБольше или равно (переменная с правой стороны)
$a -gt 2or$a -lt 2Больше чем или меньше чем
2 -ge $aМеньше или равно (переменная с правой стороны)
-
2 -le $a Меньше или равно (переменная с правой стороны)
Я написал полную статью о операторах PowerShell, обязательно ознакомьтесь с ней, если хотите узнать больше.
Переменные и объекты
Присваивание переменных довольно простое, но в PowerShell есть несколько удобных методов, чтобы быстро создать диапазон или присвоить несколько переменных. Кроме того, области видимости в PowerShell могут быть полезны в некоторых случаях. Но помните, не используйте глобальную область видимости для всего, часто есть лучший способ.
| Команда | Описание |
|---|---|
$a = "Привет" | Присвоить значение переменной |
$a, $b = "Привет","Пока" | Множественное присвоение переменных |
| диапазон=1..10 | Создайте массив с последовательностью |
$_ | Получить текущий объект конвейера |
$null | Нулевое значение |
[тип]$переменная | Объявленная типизированная (int, string) переменная |
$глобальный:var | Назначить переменную в глобальной области видимости |
Управляющие конструкции
Управляющие операторы позволяют контролировать, что ваш скрипт должен делать дальше, основываясь на определённых условиях. Самый известный управляющий оператор — это, конечно, оператор if-else.
Также циклы For и ForEach часто используются и хорошо известны. Но менее известны новые тернарный оператор и операторы объединения с нулевым значением, которые доступны в PowerShell 7.
| Заявление | Описание |
|---|---|
если ($условие) { } иначе { } | Простое условное выражение If-Else |
($x -gt 10) ? "Высокий" : "Низкий" | Трехмерный оператор для if-else (PS7) |
переключатель ($var) { } | Переключатель |
для ($i=0; $i < 10; $i++) { } | Стандартный цикл for |
для каждого ($item в $collection) {} | Цикл для итерации по коллекциям |
пока ($условие) { } | Цикл while с условием |
$result=$value ?? "По умолчанию" | Присваивает значение по умолчанию, если значение равно нулю (PS7) |
$value ??= ЗначениеПоУмолчанию | Назначает, если null (PS7) |
$result=$ {object}?.Свойство | Получить доступ к свойству, если объект существует (PS7) |
$элемент=$ {массив}?[индекс] | Получить доступ к элементу, если массив существует(PS7) |
Коллекции и хэш-таблицы
Работая с наборами данных, вы действительно не можете обойтись без массива, хэш-таблицы или объекта. В шпаргалке по PowerShell вы найдете все, что нужно для создания, назначения или получения информации из одного из элементов коллекции.
Вы знали, что хэш-таблицы также особенно полезны, когда речь идет о повышении читабельности вашего кода? С помощью сплаттинга мы можем группировать параметры командлетов в удобной таблице перед их присвоением. Это значительно упрощает редактирование значений параметров, без необходимости горизонтальной прокрутки.
| Команда | Описание |
|---|---|
$array=@('элемент1', 'элемент2', 'элемент3') | Создать массив со значением |
$массив[индекс] | Доступ к элементу массива |
$array.Длина | Получить длину массива |
$array.Добавить(item) | Добавить элемент в массив |
$array.Удалить(item) | Удалить элемент из массива |
| $hash=@{ key1='value1'; key2='value2'; } | Создайте хеш-таблицу |
$hash.key1 | Ключ доступа хэша |
$hash.key2='новое значение' | Присвоить значение хэш-ключу |
$hash.Add('key3', 'value') | Добавьте пару ключ-значение |
$hash.Удалить('key2') | Удалить пару ключ-значение |
| $obj=[PSCustomObject]@{ Prop1='Val1'; Prop2='Val2' } | Пользовательский объект |
Ввод/Вывод
PowerShell также отлично подходит для экспорта данных из систем (например, Microsoft 365) и генерации отчетов. Основные cmdlet, которые вам нужно знать для этого, перечислены в таблице. Но если вы хотите узнать больше, то обязательно ознакомьтесь с модулем PowerShell для Excel.
| Команда | Описание |
|---|---|
$var=Чтение-Хост | Читать ввод пользователя |
Получить-Содержимое | Читать содержимое файла |
Импортировать-CSV | Импорт из CSV файла |
Экспорт-CSV | Экспорт в файл CSV |
Write-Host "Привет" | Написать в консоль |
Напечатать-Хост "$ ($obj.test)" | Записать в консоль с помощью свойства объекта |
$var | Out-GridView | Вывод в интерактивное сетчатое представление |
Запуск скриптов и обработка
Запуск скрипта PowerShell не так уж сложно. Но знаете ли вы, как запустить скрипт в текущем контексте? Или как фоновую задачу? Большинство не используют эти методы ежедневно, но они могут оказаться очень полезными, поэтому я перечислил их в шпаргалке для вашего удобства.
| Команда | Описание |
|---|---|
Запустить-Процесс блокнот | Запустите внешний процесс или приложение |
Запустить-НитьРаботы -СкриптБлок { Получить-Процесс } | Запустите скрипт или задачу в фоновом режиме |
. .\script.ps1 | Запустите сценарий в текущем контексте (используя точечный источник) |
& .\script.ps1 | Запустите скрипт в новой области (оператор вызова) |
Трубопровод и форматирование
Символ конвейера в PowerShell позволяет передавать результаты с левой стороны другому командлету или блоку скрипта с правой стороны. Таким образом, вам не нужно «хранить» результаты в переменной и создавать циклы для всего.
Большинство опытных пользователей PowerShell знают эти методы, но когда вы совсем новички в PowerShell, здорово быстро проверить правильный способ с помощью метода с использованием конвейера.
| Команда | Описание |
|---|---|
Получить-Процесс | Сортировать-Объект -Свойство Имя | Сортировать процессы по имени |
Получить-ЭлементыДетей *.txt | Где-Объект {$_.Длина -gt 1КБ} | Фильтровать текстовые файлы больше 1KB |
| Получить-Процесс | Выбрать-Объект -Свойство Имя, ID, ЦПУ | Выберите имя процесса, идентификатор и использование ЦП |
Получить-Процесс | ДляКаждого-Объекта {$_.ИмяПроцесса} | Обработайте каждый элемент в цепочке поставок |
Get-ChildItem | Format-List -Property Name, Length | Отобразить имя файла и длину в списке |
Получить-Процесс | Формат-таблица -Свойство ID, CPU -АвтоРазмер | Отображать процессы в таблице с автоматически подстраиваемыми столбцами |
Завершение
Убедитесь, что вы загрузили этот процессор PowerShell и распечатали его, чтобы вы могли быстро проверить информацию. Если вам нравится этот лист, обязательно поделитесь им с коллегами. Если вам не нравится печатная версия, вы всегда можете добавить эту страницу в закладки, так как она содержит ту же информацию.
Если у вас есть какие-либо вопросы или вы знаете команду, которая действительно должна быть в таблице, просто оставьте комментарий ниже.