Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
gmaster
7 лет назад

Академия: Windows PowerShell Basics. Модуль #3

enter image description here

Конспект курса лекций для Академии

Конспект модуля №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. Также, ещё раз хотелось бы отметить практические задания, которые авторы предлагают выполнить. Эти задания как всегда божественны, и возможно, помогли приобрести мне больше знаний, чем изучение теоретической части курса.

2
125.864 GOLOS
На Golos с May 2017
Комментарии (2)
Сортировать по:
Сначала старые