Главная страница

лабораторная работа. Лабораторная работа 1 Командная оболочка PowerShell. Основные понятия


Скачать 1.25 Mb.
НазваниеЛабораторная работа 1 Командная оболочка PowerShell. Основные понятия
Анкорлабораторная работа
Дата23.05.2022
Размер1.25 Mb.
Формат файлаdocx
Имя файлаLaboratornaya_rabota_1.docx
ТипЛабораторная работа
#545377

Лабораторная работа №1

Командная оболочка PowerShell.

Основные понятия
Операцио́нная систе́ма, сокр. ОС (англ. operating system, OS) — комплекс взаимосвязанных программ, предназначенных для управления ресурсами компьютера и организации взаимодействия с пользователем. В логической структуре типичной вычислительной системы операционная система занимает положение между устройствами с их микроархитектурой, машинным языком и, возможно, собственными (встроенными) микропрограммами (драйверами) — с одной стороны — и прикладными программами с другой.
PowerShell — это кроссплатформенное решение для автоматизации задач, которое включает оболочку командной строки, скриптовый язык и платформу управления конфигурацией. PowerShell поддерживается в Windows, Linux и macOS.
Приступим к работе в новой оболочке командной строки Windows отMicrosoft! Если у вас загружена операционная система WindowsVista и старше, то оболочка PowerShell уже установлена. Если же вы работаете с другой версией Windows, то PowerShell нужно предварительно загрузить и установить.

Оболочка PowerShell может работать не во всех версиях операционной системы Windows, ее можно использовать в Windows XP SP2, Windows Server2003 SP1 и более поздних версиях. Кроме этого, в системе должна быть установлена платформа .NET Framework 2.0 (в Windows XP данную средупридется устанавливать дополнительно.
1. Запуск оболочки
Установив оболочку в системе, можно начать новый интерактивный сеанс.

1. Для этого следует нажать кнопку Пуск, открыть меню Все программыи выбрать элемент Windows PowerShell.

2. Другой вариант запуска оболочки – выбрать пункт Выполнить… в меню Пуск, ввести имя файла powershellи нажать кнопку OK.

В результате откроется новое командное окно с приглашением вводить команды:


2. Выполнение первой команды
Выполним первую команду в PowerShell, например, команду dir. Отметим, что в новой оболочке команды по-прежнему обрабатываются без учета регистра:


На экран выводится список файлов и подкаталогов в текущем каталоге.
3. Перенаправление вывода
1. С помощью символа > (знак "больше") можно выводить результат выполнения команд не на экран, а в текстовый файл (эта процедура называется перенаправлением вывода). Попробуем сделать тоже самое в PowerShell:

PS C:\DocumentsandSettings\User> dir>c:\dir.txt
Данная команда выполнилась без каких-либо сообщений на экране.
2. Выведем теперь на экран содержимое файла c:\dir.txt, воспользовавшись для этого командой type:

PS C:\Documents and Settings\User> type c:\dir.txt
ЗАМЕЧАНИЕ

Если файл, в который с помощью символа >перенаправляется вывод, уже существует, то его содержимое будет перезаписано. В оболочке PowerShell такжеподдерживается перенаправление вывода в режиме добавления информациив конец существующего файла — для этого используются символы >>. Перенаправление ввода с помощью символа < в PowerShell не поддерживается.
4. Вычисление выражений
1. Кроме выполнения команд, в PowerShell можно вычислять выражения, то есть пользоваться оболочкой как калькулятором (в оболочке cmd.exe эта возможность отсутствовала). Например:



Как видите, результат вычислений сразу же выводится на экран, и нет необходимости использовать для этого какую-либо специальную команду (этуособенность PowerShell следует запомнить на будущее).
2. Предыдущие примеры показывают, что PowerShell справляется с вычислением целочисленных выражений, в том числе со скобками. Проверим выражение, результатом которого является число с плавающей точкой:

PS C:\> 10/3

3.33333333333333
3. На самом деле в Power-Shell можно выполнять и более сложные вычисления, включающие в себяразличные математические функции. Для этого используются методы .NET-класса System.Math. Например, следующая команда вычисляет и выводитна экран корень квадратный из числа 169:

PS C:\> [System.Math]::Sqrt(169)

13
ЗАМЕЧАНИЕ

Более подробно использование методов .NET-классов будет обсуждаться позднее.
4. Результат вычисления выражения в PowerShell можно сохранять в переменной и пользоваться этой переменной в других выражениях. Например:

PS C:\> $a=10/2

PS C:\> $a

5

PS C:\> $a*3

15

Отметим здесь, что в PowerShell имена переменных должны начинаться со знака доллара ($). Более подробно вопросы, связанные с переменными, будутобсуждаться позже.
5. Реализуйте представленные выше примеры и три своих вычисления (простых – 1; сложные – 1; с использованием переменных – 1).
ТИПЫ КОМАНД
5. Командлеты
В оболочке PowerShell поддерживаются команды четырех типов: командлеты, функции, сценарии и внешние исполняемые файлы.
Первый тип команд PowerShell — так называемые командлеты (cmdlet). Этот термин используется пока только внутри PowerShell. Командлет представляет собой класс .NET, порожденный от базового класса Cmdlet. Единыйбазовый класс Cmdlet гарантирует совместимый синтаксис всех командлетов,а также автоматизирует анализ параметров командной строки и описаниесинтаксиса командлетов, выдаваемое встроенной справкой.
Команды этого типа компилируются в динамическую библиотеку (DLL) и подгружаются к процессу PowerShell во время запуска оболочки (то естьсами по себе командлеты не могут быть запущены как приложения, но в нихсодержатся исполняемые объекты). Так как компилированный код подгружа-ется к процессу оболочки, такие команды выполняются наиболее эффективно.Командлеты можно считать в определенном смысле аналогом внутреннихкоманд традиционных оболочек, хотя в отличие от внутренних команд новыекомандлеты могут быть добавлены в систему в любое время.
Командлеты могут быть очень простыми или очень сложными, но каждый из них разрабатывается для решения одной узкой задачи. Работа с командлетами становится по-настоящему эффективной при использовании их композиции, когда объекты передаются от одного командлета другому по конвейеру.
5.1. Имена и структура командлетов
Имена командлетов всегда соответствуют шаблону "глагол-существительное", где глагол задает определенное действие, а существительное определяет объект, над которым это действие будет совершено. Это значительно упрощаетзапоминание и использование командлетов. Например, для получения информации о процессе служит командлет Get-Process, для остановки запущенной службы – командлет Stop-Service, для очистки экрана консоли – командлет Clear-Host и т. д.
1. Чтобы просмотреть список командлетов, доступных в ходе текущего сеанса, нужно выполнить командлет Get-Command:


Командлеты могут иметь параметры — элементы, предоставляющие командлетам дополнительную информацию. Данная информация либо определяет элементы, с которыми должна работать команда, либо определяет, каким образом будет работать командлет. Параметры командлетов могут быть трех разных типов; обратиться к ним можно по имени, перед которым ставится дефис (-), или по позиции (в последнем случае интерпретация параметра будет выполняться в зависимости от его местоположения в командной строке).
В общем случае синтаксис командлетов имеет следующую структуру:

имя_командлета -параметр1 -параметр2 аргумент1 аргумент2
Здесь -параметр1 – параметр, не имеющий значения (подобные параметры часто называют переключателями); -параметр2 – имя параметра, имеющего значение аргумент1; аргумент2 – параметр, не имеющий имени (или аргумент).
2. В качестве примера переключателя рассмотрим параметр -Recurse командлета Get-ChildItem.
ЗАМЕЧАНИЕ

Для краткости команд вместо командлета Get-ChildItem мы будем применять его псевдоним dir (более подробно вопросы, связанные с псевдонимамикомандлетов, обсуждаются в следующих разделах).
Переключатель -Recurse, если он указан, распространяет действие команды не только на определенный каталог, но и на все его подкаталоги. Например,следующий командлет выведет информацию обо всех файлах, которые находятся в каталоге c:\windows или его подкаталогах и имеют имя, удовлетворяющее маске n*d.exe (как видите, никакого аргумента после параметра -Recurse не указано):

PS C:\Documents and Settings\User> dir -Recurse -Filter n*d.exe c:\windows
5.2. Общие параметры командлетов
Напомним, что все командлеты являются потомками базового класса Cmdlet, в котором определены несколько параметров, обеспечивающих определенный уровень совместимости командлетов и согласования интерфейса оболочки PowerShell. Таким образом, некоторые параметры, называемые общими, поддерживаются всеми командлетами PowerShell (при этом на некоторыекомандлеты подобные параметры могут никак не влиять). Общие параметрыперечислены в таблице:



Скажем дополнительно несколько слов о параметре -WhatIf из таблицы. Этот параметр позволяет увидеть объекты, на которые будет действовать тотили иной командлет, не выполняя при этом самих действий. Например, следующая команда позволяет увидеть, какие файлы в каталоге c:\temp будутудалены при выполнении команды del (сами файлы при этом не удаляются):

PS C:\> del -WhatIf "c:\temp\*.*"

WhatIf: Выполнение операции "Удаление файла" над целевым объектом

"C:\temp\bidiSNMP.dll".

Глава 2. Первые шаги в PowerShell. Основные понятия 35

WhatIf: Выполнение операции "Удаление файла" над целевым объектом

"C:\temp\BiDiSNMP.ini".

WhatIf: Выполнение операции "Удаление файла" над целевым объектом

"C:\temp\Setup.exe".


2. Попробуйте провести процедуру указанную выше для «безопасной» папки на вашем компьютере. При необходимости создайте ее самостоятельно.
6. Функции
Следующий тип команд PowerShell – функции. Функция – это блок кода на языке PowerShell, имеющий название и находящийся в памяти до завершениятекущего сеанса командной оболочки. Анализ синтаксиса функции производится только один раз при ее объявлении (при повторном запуске функцииподобный анализ не проводится).
1. Создадим простейшую функцию:

PS C:\Documents and Settings\User> function MyFunc{"Всемпривет!"}
Эта функция имеет имя MyFunc, в ее теле просто выводится строка "Всем привет!".
2. Вызовем нашу функцию из командной строки:

PS C:\Documents and Settings\User> MyFunc
3. Функции, как и командлеты, поддерживают работу с параметрами (аргументами). Например, определим функцию MyFunc1 с одним формальным параметром:

PS C:\Documents and Settings\User> function MyFunc1($a) {"Привет, $a!"}
4. Вызовем данную функцию с параметром:

PS C:\Documents and Settings\User> MyFunc1 Андрей
7. Сценарии
Третий тип команд, поддерживаемый PowerShell, — это сценарии. Сценарий представляет собой блок кода на языке PowerShell, хранящийся во внешнем файле с расширением ps1. Анализ синтаксиса сценария производится при каждом его запуске.

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

8. Внешние исполняемые файлы
Последний тип команд, запускаемых в PowerShell, — внешние исполняемые файлы, которые выполняются операционной системой обычным образом. В частности, из оболочки PowerShell можно запускать любые внешниекоманды интерпретатора cmd.exe (например, xcopy), просто указывая их имена.
9. Псевдонимы команд
Как отмечалось ранее, имена всех командлетов в PowerShell соответствуют шаблону "глагол-существительное" и могут быть довольно длинными, чтозатрудняет их быстрый набор. Механизм псевдонимов, реализованный в PowerShell, дает возможность пользователям выполнять команды по ихальтернативным именам. В PowerShell заранее определено много псевдонимов, кроме того, можно добавлять в систему собственные псевдонимы.

1. Например, мы уже несколько раз пользовались командой dir, которая в действительности является псевдонимом командлета Get-Childitem. Убедитьсяв этом можно с помощью командлета Get-Command или Get-Alias:

PS C:\Documents and Settings\User> Get-Command dir

или

PS C:\Documents and Settings\User> Get-Alias dir
Псевдонимы в PowerShell делятся на два типа.

Первый тип предназначен для совместимости имен с разными интерфейсами. Псевдонимы этого типа позволяют пользователям, имеющим опыт работы с другими оболочками (cmd.exe или UNIX-оболочки), использовать знакомые им имена команд длявыполнения аналогичных операций в PowerShell. Это упрощает освоение новой оболочки, позволяя не тратить усилий на запоминание новых команд PowerShell.

Например, пользователь хочет очистить экран. Если у него есть

опыт работы с cmd.exe, то он, естественно, попробует выполнить команду cls. PowerShell при этом автоматически выполнит командлет Clear-Host, для которого cls является псевдонимом и который выполняет требуемое действие — очистку экрана. Для пользователей cmd.exe в PowerShell определены псевдонимы cd, cls, copy, del, dir, echo, erase, move, popd, pushd, ren, rmdir, sort, type; для пользователей UNIX — псевдонимы cat, chdir, clear, diff, h, history, kill, lp, ls, mount, ps, pwd, r, rm, sleep, tee, write.

Псевдонимы второго типа (стандартные псевдонимы) в PowerShell предназначены для быстрого ввода команд. Такие псевдонимы образуются из именкомандлетов, которым они соответствуют. Например, глагол Get сокращается до g, глагол Set сокращается до s, существительное Location сокращаетсядо l и т. д. Таким образом, командлету Set-Location соответствует псевдоним sl, а командлету Get-Location — псевдоним gl.
2. Просмотреть список всех псевдонимов, объявленных в системе, можно с помощью командлета Get-Alias без параметров:

PS C:\Documents and Settings\User> Get-Alias
Благодаря псевдонимам синтаксис PowerShell приобретает гибкость: однии те же команды могут быть записаны и очень кратко, и в развернутом виде.Это очень важно для языка, который одновременно является оболочкой командной строки и языком написания сценариев. При интерактивной работедля ускорения ввода команд удобнее применять краткие псевдонимы и неполностью указывать имена параметров. Если же вы пишете сценарии, толучше использовать полные названия командлетов и их параметров, это значительно упростит в дальнейшем разбор программного кода.
10. Диски PowerShell
Все мы давно привыкли к структуре файловой системы как совокупности вложенных папок (каталогов) и файлов. В операционной системе Windowsинтерфейс к такой структуре предоставляют Проводник Windows, оболочкаcmd.exe, а также различные файловые менеджеры сторонних разработчиков.В UNIX-системах понятия файлов и папок трактуются более широко, в качестве файлов здесь могут выступать различные компоненты системы (например,аппаратные устройства или сетевые подключения). Такой подход упрощаетпоиск нужных элементов в операционной системе. Оболочки командной строки или другие утилиты, обращающиеся к файлам в UNIX-системах, могут работать также и с этими компонентами.
1. Для получения списка дисков PowerShell, доступных в текущем сеансе работы, нужно воспользоваться командлетом Get-PSDrive:

PS C:\> Get-PSDrive
Как видите, командлет Get-PSDrive для каждого диска сообщает имя провайдера (колонка Provider), поддерживающего этот диск.
10.1. Провайдеры PowerShell
Провайдер PowerShell — это .NET-приложение, предоставляющее пользователям PowerShell доступ к данным из определенного специализированного хранилища в согласованном формате, напоминающем формат обычных дисков файловой системы. Тем самым провайдеры PowerShell обеспечивают доступ к данным, к которым трудно обратиться через командную строку иными способами.

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

1. Для просмотра списка зарегистрированных в оболочке PowerShell провайдеров нужно воспользоваться командлетом Get-PSProvider:

PS C:\> Get-PSProvider
10.2. Навигацияподискам PowerShell
Основное назначение провайдеров заключается в том, что они обеспечивают доступ к разнородным данным привычным согласованным образом. Используемая при этом модель представления данных основана на дисках файловойсистемы.

Предлагаемые провайдером данные можно просматривать и изменять так, как если бы они хранились в виде каталогов и файлов на жестком диске.

Навигация по различным дискам PowerShell и просмотр содержимого этих дисков осуществляется с помощью одних и тех же базовых командлетов.
Работая с файловой системой, мы используем понятие текущего или рабочего каталога. К файлам в рабочем каталоге можно обращаться по имени, не указывая полного пути к ним. В оболочке cmd.exe для определения или сменырабочего каталога служит команда cd (можно пользоваться и полным именемchdir):

C:\Documents and Settings\404_Popov> cd /?

Вывод имени либо смена текущего каталога.

CHDIR [/D] [диск:][путь]

CHDIR [..]

CD [/D] [диск:][путь]

CD [..]

.. обозначает переход в родительский каталог.

Команда CD диск: отображает имя текущего каталога указанного диска.

Команда CD без параметров отображает имена текущих диска и каталога.
1. В оболочке PowerShell понятие рабочего (текущего) каталога распространяется и на диски PowerShell. Узнать путь к текущему каталогу можно с помощью командлета Get-Location (псевдоним pwd данного командлета соответствует команде UNIX-оболочек с аналогичной функциональностью):

PS C:\Documents and Settings\404_Popov> Get-Location
2. Для смены текущего каталога (в том числе для перехода на другой диск PowerShell) используется командлет Set-Location (псевдонимы cd, chdir, sl). Например:

PS C:\Documents and Settings\404_Popov> Set-Location d:\
3. Как видите, при вводе командлета Set-Location на экран явно не выводится отзыв о его выполнении. При необходимости можно использовать параметрPassThru, выводящий после выполнения команды Set-Location путь к текущему каталогу:

PS HKLM:\Software> Set-Location 'C:\Program Files' –PassThru
10.3. Просмотр содержимого дисков и каталогов
1. Для просмотра элементов и контейнеров, находящихся на определенном диске PowerShell, можно воспользоваться командлетом Get-ChildItem (псевдонимы dir и ls). Естественно, выводимая информация при этом будет зависетьот типа диска PowerShell. Для примера выполним командлет Get-ChildItemна диске, соответствующем корневому разделу реестра HKEY_CURRENT_USER, и на обычном диске файловой системы:

PS C:\Documents and Settings\404_Popov> cd hkcu:

PS HKCU:\> dir
2.

PS HKCU:\> cd 'C:\Program Files'

PS C:\Program Files> ls
Командлет Get-ChildItem имеет несколько параметров, позволяющих, в частности, просматривать содержимое вложенных каталогов, отображать скрытые элементы, применять фильтры для отображения файлов по маске и т. д. Более подробную информацию о возможностях и параметрах командлета Get-ChildItem можно найти в справочной системе PowerShell.


написать администратору сайта