Конспект курса лекций для Академии
Конспект модуля №1. Введение
Конспект модуля №2. Pipeline
В этом модуле речь пойдёт о использовании переменных и методах работы с данными.
Модуль #3. Data
3.1 Переменные
Для того, чтобы упростить слишком сложные сценарии и автоматизировать процессы, часто приходится прибегать к использованию переменных.
Переменная - это ячейка, либо несколько ячеек памяти в которой хранятся какое-либо значение. В Windows PowerShell переменные представлены текстовыми строками, начинающимися со знака доллара ($), например:
$FirstName
$processes
$Today
Переменные обычно используются для хранения результатов исполнения команд и для хранения элементов, которые применяются в командах и выражениях, таких как имена, пути, настройки и значения. Чтобы создать новую переменную, нужно использовать оператор присваивания. Значение по умолчанию для всех переменных равно $ null.
$FirstName = "foo"
$Process = Get-Process
$Today = (Get-Date) .date
Чтобы отобразить значение переменной, введите её имя сразу после знака доллара.. Например,
PS> $Today = (Get-Date).Date
PS> $Today
Thursday, September 03, 2009 12:00:00 AM
Чтобы изменить значение переменной, просто назначьте ей новое значение.
PS> $Today = (Get-Date).DayofWeek
PS> $Today
Sunday
Чтобы получить список всех переменных в сеансе Windows PowerShell, используйте командлет Get-Variable.
Переменные могут содержать набор значений разных типов. При использовании PowerShell не нужно объявлять тип переменной вручную. Здесь применяется так называемая “Динамическая типизация” (не путать со "статической маршрутизацией").
В основе приверженцев подхода динамической типизации положено именно это утверждение
Объявление переменной происходит автоматически, после того как ей будет присвоено какое-либо значение.
PS> $a = 12
PS> $a = "Word"
PS> $a = 12, "Word"
PS> $a = dir C:\Windows\System32
В общем случае, переменные PowerShell можно классифицировать согласно следующей схеме:
Вообще, данная классификация не совсем точная, но в целом, верная
Массивы.
Массив - это структура данных, предназначенная для хранения коллекции из нескольких элементов. Чтобы создать и инициализировать массив, нужно указать несколько переменных, которые могут быть перечислены через запятую и отделены от имени переменной оператором присваивания (=).
$A = 22,5,10
$B = "last", "1", "green", "True"
Вы также можете создать и инициализировать массив, используя оператор диапазона (..).
Например, мы можем создать и инициализировать массив с именем $B, который содержит значения с 5 по 8.
$B = 5..8
Чтобы сослаться на какой-либо элементы массива, нужно использовать индекс, Например, чтобы отобразить третий элемент в массиве $A, нужно ввести:
$A[2]
В PowerShell доступны все стандартные арифметические операторы для работы с переменными. Доступны стандартные операции сложения, деления, умножения и вычитания.
Пример применения:
$ A = 0
$ B = 1,2
$ C = -1, -2
$ B [$ a] = $ c [1]
3.2 PSProviders и PSDrives
В этой части конспекта мы рассмотрим два важных компонента PowerShell. а именно PSProviders и PSDrives
PSProvider является провайдером, который обеспечивает доступ к внешней системе данных удобным и быстрым способом.
PSProvider предоставляет данные как иерархическое хранилище, которое напоминает файловую систему. В итоге, мы получаем иерархическую структуру элементы которой, могут иметь свойства и методы, с помощью которых можно легко управлять структурой данных
Например, можно использовать команду Get-ChildItem для извлечения списка всех файлов, найденных в папке, или Get-ChildItem для извлечения списка всех подразделов дерева.
Чтобы посмотреть какие провайдеры доступны, нужно запустить команду:
Get-PSProvider
С помощью PSProvider можно легко работать с реестром, хранилищем сертификатов, различными файловыми системами, даже нестандартными. Также существует множество специализированных провайдеров, например провайдер для работы с IIS.
Для общения с каким-либо провайдером используется командлет PSDrive . Каждый PSDrive использует один PSProvider для подключения к хранилищу данных. PSDrive обладает всеми возможностями PSProvider, которые используются для соединения.
Упрощенно, работа PSDrive аналогична работе с каким-либо носителем, которому назначается алиас, который может состоять из одного, или нескольких символов. Например, подключив какой-либо реестр, нам удобно работать с алиасами состоящими из заглавных букв названий корневых веток системного реестра. Обращаясь к PSDrive HKCU, мы будем работать с веткой реестра HKEY_CURRENT_USER. Однобуквенные имена зарезервированы для работы с какой-либо файловой системой. Это сделано, дабы обеспечить совместимость.
Стандартный пример: Диск C:.
Чтобы начать работать с PSProviser нужно создать новое соединение при помощи команды New-PSDrive. Необходимо указать уникальное имя PSDrive, корневую папку для нового диска и PSProvider, которые будут использоваться для соединения. В зависимости от используемого модуля также можно будет указать альтернативные учетные данные и другие параметры.
Чтобы посмотреть список запущенных PSDrive, используется команда Get-PSDrive.
Для того, чтобы просмотреть список команд, которые работают с элементами можно запустить командлеты Get-Command -Noun Item, ChildItem. Элементами в данном случае могут являються такие вещи, как файлы, папки, ключи реестра, сертификаты или переменные.
3.3 Работа с файловой системой
Все знают стандартные команды для работы с файловой системой, такие Dir, Move, MkDir, Cd и прочее. В случае Windows PowerShell мы используем их, как псевдонимы для командлетов, а работа с файловой системой происходит через FSProvider
Схема предоставляет прекрасную возможность не запутаться в алиасах, при применении к ним многочисленных ключей
Файл это элемент который находится на PSDrive типа FileSystem. Из этого файла можно получить полезную информацию при помощи метода Get-Content или изменить её при помощи Set-Content. Эти два метода мы рассматривали в предыдущем конспекте.
Для того, чтобы использовать стандартные команды для работы с файлми, необходимо знать о дополнительных нюансах.
Часто, команде нужно сообщить путь, чтобы указать, каким элементом Вы хотите манипулировать. Для большинства команд возможно сделать это двумя способами::
-Path Данный ключ может интерпретировать звездочку (*) и знак вопроса (?) в качестве подстановочных знаков.
-LiteralPath обрабатывает все символы как литералы и не интерпретирует никакие символы в качестве подстановочного знака.
К примеру, литеральный путь * .txt означает «элемент с именем * .txt».
Например, на диске FileSystem, есть файл. Файл содержит данные, которые Вы можете получить с помощью командлета Get-Content или изменить, использовав Set-Content. Файлы также имеют свойства, такие как имя, последнее время записи и прочее.
Что для вас было наиболее интересным и впечатляющим в данной неделе курса?
В целом, модуль вызвал лишь положительные впечатления. По большому счёту, информации, которую авторы изложили в этом и предыдущих модулях, уже достаточно для того, чтобы полноценно использовать PowerShell в повседневной деятельности. Основные принципы и базовые аспекты были довольно подробно освещены, а для всего остального есть Get-Help. Также, ещё раз хотелось бы отметить практические задания, которые авторы предлагают выполнить. Эти задания как всегда божественны, и возможно, помогли приобрести мне больше знаний, чем изучение теоретической части курса.
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
mir, lumia, shuler, amikphoto, vasilisapor2, varvar, karusel1, ukrainochka, stranniksenya, anomalywolf, makcum52, dim447, now, zhenek
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
@gmaster Поздравляю! Вы добились некоторого прогресса на Голосе и были награждены следующими новыми бейджами:
Награда за общую выплату получил
Вы можете нажать на любой бейдж, чтобы увидеть свою страницу на Доске Почета.
Чтобы увидеть больше информации о Доске Почета, нажмите здесь
Если вы больше не хотите получать уведомления, ответьте на этот комментарий словом
стоп