Материал: ЛАБОРАТОРНАЯ РАБОТА N 12,13 PowerShell

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ЛАБОРАТОРНАЯ РАБОТА №12, 13. WindowsPowerShell

Цельэтойработы-научитьсяиспользованиюключевыхвозможностейWindowsPowerShellдлявыполненияразличныхадминистративныхзадач.

1. Определения

Windows PowerShell(PS) - расширяемое средство автоматизации от Microsoft с открытым исходным кодом, состоящее из оболочки с интерфейсом командной строки и сопутствующего языка сценариев.Ввод команд Powershellрегистронезависим. Регистр используется для удобства прочтения кода. При анализе же потока вывода – регистр играет роль.

Командлеты (англ. cmdlets) - это специализированные команды PowerShell, которые реализуют различную функциональность. Это встроенные в PowerShell команды. Командлеты именуются по правилу Глагол-Существительное, например, Get-ChildItem, благодаря чему их предназначение понятно из названия. Командлеты выводят результаты в виде объектов или их коллекций. Дополнительно командлеты могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, командлеты всегда обрабатывают объекты поочередно.Сохраняется и перенаправление вывода (>).

СценарииPowerShell поддерживает переменные, функции, конструкции ветвления (if-then-else) циклы (while, do, for и foreach), структурированную обработку ошибок и множество других возможностей, включая интеграцию с .NET. Язык не строго типизирован, внутри переменные сохраняются с их типами, которые могут быть базовыми типами (англ. primitivetypes) или объектами. Строки могут быть заключены в одиночные кавычки или в двойные кавычки: при использовании двойных кавычек переменные, содержащиеся в строке, будут заменены их значениями.

2. ЗапусксредыWindowsPowerShell

  1. ЗапусксредыWindowsPowerShellосуществляетсяследующимобразом:

Пуск(Start)->ВсеПрограммы(AllProgramms) и выбратьэлементWindowsPowerShell.

Другойвариантзапускаоболочки – пункт:

Выполнить...(Run)вменюПуск(Start),ввестиимяфайлаpowershellинажатькнопкуОК.

3. Предварительная подготовкасправочной системы.

Для получения справки по командам WindowsPowerShellс примерами необходимо обновить справочную систему. Для этого нужно запустить оболочку PSс правами администратора и выполнить команду Update-Help. Для получения справки с примерами по соответствующему командлету после этого достаточно указать ключ -Examples: напр.: Get-HelpComandlet-Examples. Для вывода подробного описания командлета используется ключ: Get-HelpNew-Item-Full. Если такой возможности нет, можно обратиться к онлайн-справке PS. Для этого достаточно в оболочке PSнабрать следующую команду: Get-HelpUpdate-Help -Online, выбрать соответствующую версию PS(1 на рис.1) и осуществить поиск нужного командлета (2 на рис.1).

Рис. 1

4.Примеры ввода команд.

  1. Выполнитекоманду:PSC:>Get-Command

Наэкранбудетвыведенсписоквсехвстроенныхкоманд.

  1. Просмотритесписоквсехсервисов,запущенныхнавашемкомпьютере,исполнивкоманду:PSC:>Get-Service

  2. Просмотритесписоквсехпроцессов,запущенныхвнастоящиймоментнавашемкомпьютере,исполнивкоманду:PSC:>Get-Process

  3. ДляполученияинформациитолькоободномпроцессевкачествеаргументакомандыGet-Processзадаетсяимяэтогопроцесса.Выполнитекоманду:

PSC:>Get-Processexplorer

Для получения информации обовсехзапущенныхпроцессах,начинающихсянасимвол "w": PSC:>Get-Processw*

Поумолчаниюинформациявыводитсяввидетаблицы,нонасамомделевсекомандывозвращаютобъекты.Этиобъектымогутбытьпереданынавходдругимкомандамспомощьюсимвола«|»

  1. При наборе команд вручную предусмотрена возможность автодополнения с помощью TAB. Для этого нужно ввести необходимый минимум символов команды и нажать TAB. Напр., Get- + TABвыдаст Get-Acl. Повторные нажатия TABвыдадут следующие по алфавиту возможные варианты. Чем больше введено символов команды, тем точнее автодополнение.

  2. Некоторые команды по умолчанию имеют короткие алиасы. Напр., ps = Get-Process. Полный список алиасов можно получить, набрав alias, конкретный алиас: aliasps. Для поиска строки, содержащей нужное слово или часть можно использовать конвеер: alias | findstr "Item".

5. Форматирование вывода.

  1. Выполнитекоманду:PSC:>Get-Processi*|format-list

Объектыбудутотформатированыввидесписка.Теперьсписокпроцессовдоступенвдругомпредставлении.Для получения подробной информации о различных форматах можно использовать следующую команду:PSC:>Helpformat*

Другие возможные форматы:PSC:>Get-Processi*|format-wide

иPSC:>Get-Processi*|format-custom

Выполняя команды, мы всегда получаем объекты, а у объектов есть свойства. Просмотрите все свойства объекта, полученного при выполнении командыGet-Processиспользуяследующуюкоманду:PSC:>Get-Process|Get-Member

Посколькунавыходевсегдаполучаетсяобъект,можноманипулироватьимдлявыполнениядополнительныхопераций.Выполнитеоперациюфильтрации,исполнивкоманду:PSC:>Get-Process|where{$_.handlecount-gt400}

  1. Выполнитеоперациюсортировки,исполнивкоманду:

PSC:>Get-Process|where{$_.handlecount-gt400}|sort-objectHandles

  1. ВыполнимкомандуGet-Process|Get-MemberCompany–приформатированиипоумолчаниюневозможнополучитьжелаемыеданные.Преобразуемполученнуюкомандув:

PSC:>Get-Process|Get-MemberCompany|Format-List

PSC:>Get-Process|sort-objectCompany|format-table-GroupCompanyname,description,handles.

СортировкаобъектовпосвойствуWS(workingset)ивыбор5процессов,занимающихбольшевсегопамяти:

PSC:>Get-Process|sort-object-propertyWS–descending|select-object-first5

  1. Завершение процесса. Командаstop-processпозволяетостановитьзапущенныйпроцесс.ЗапуститеNotepadнавиртуальноймашине.Выполнитекоманду:

PSС:>Get-Processnotepad|Stop-Process

ОкноБлокнотазакроется.СновазапуститеNotepad.Такаявозможностьневсегдаявляетсябезопасной,поэтомулучшеиспользоватьподобныекомандысопцией-whatif,котораяпоказывает,чтопроизойдетпривыполнениитойилиинойкоманды,нонасамомделекоманданевыполняется:

PSC:>Get-Processnotepad|Stop-ProcesswhatifКрометого,можноуказыватьнанеобходимостьподтвержденияпередвыполнениемкоманды:

PSC:>Get-Processnotepad|Stop-Process–confirm

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

  1. Запустим "Блокнот": PS C:\>notepad и найдем этот процесPS C:\>psnotepad. Получим список методов, используемых этим процессом: PS C:\>psnotepad | Get-Member. Для применения к выбранному процессу одного из перечисленных методовили получения свойств используем следующую конструкцию (напр. принудительно завершить процесс):PS C:\> (psnotepad).Kill(). Таким образом, применяя выбранные методы к процессу можно получить подробнейшую информацию о нем, также управлять им.

  2. Узнать какой файл запустил тот или иной процесс можно с помощью команды: PS C:\>psnotepad| ls

6. Политики выполнения скриптов ps.

ПакетныефайлыPowershellпредставляютсобойфайлысрасширением*.psl,вкоторыепомещаютсякомандыPowerShell.Длясоблюдениябезопасностипакетныефайлыдолжныбытьподписаны.ДлязащитыпользовательскихданныхицелостностиоперационнойсистемывоболочкеWindowsPowerShellреализованынекоторыесредстваобеспечениябезопасности,втомчислеполитикавыполнения.Политикавыполненияопределяет,можноливыполнятьсценарии,и,еслида,должнылионибытьподписаныцифровойподписью.Крометого,онаопределяет,можнолизагружатьконфигурационныефайлы.

Преждевсего,посмотритетекущийстатусполитикивыполненияспомощьюкоманды:PSC:>get-executionpolicy

ВслучаеустановкипоумолчаниювыдолжныполучитьстатусRestricted.Длятогочтобысменитьэтотстатус,воспользуйтеськомандой:

PSC:>set-executionpolicy<статус_политики>

Возможны следующие политикивыполнения скриптов:

  • Restricted-этаполитикавыполненияпоумолчанию.Допускаетотдельныекоманды,носценариивыполнятьнельзя.

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

  • RemoteSigned-притакомстатусеполитикивыполнениесценариевтакжеразрешено.Необходимоналичиецифровойподписинадежногоиздателянавсехсценарияхифайлахконфигураций,загруженныхизИнтернета(включаяэлектроннуюпочтуипрограммымгновенногообменасообщениями).Нетнеобходимостивцифровыхподписяхнасценариях,запускаемыхслокальногокомпьютера.Незапрашиваютподтвержденияпередвыполнениемсценариевнадежныхиздателей.Подписанные,новредоносныесценариитакжевыполняются.

  • Unrestricted-самаядемократичнаяполитика,позволяетзапускатьнеподписанныесценарии.Сценарииифайлыконфигурации,загруженныеизИнтернета(включаяMicrosoftOutlook,OutlookExpressиWindowsMessenger),выполняютсяпослепредупреждения,чтоданныйфайлбылзагруженизИнтернета.Притакомстатусетакжевозможновыполнениевредоносныхсценариев.Использованиеданногостатусаполитикивыполнениярекомендуетсятольконатестовыхмашинах,таккаквреальныхсетяхэтокрайненебезопасно.

ВзависимостиотспецификивыполняемыхсерверамизадачрекомендуетсяиспользоватьRemoteSigned,вслучаях,когдавыполняютсяпреимущественносценариисобственногонаписания,иAllSigned,когдавыполняютсясценарии,полученныеизвнешнихисточников.ДлянашегоупражненияустанавливаемстатусполитикиUnrestrictedлибоRemoteSigned:

PSC:>Set-ExecutionPolicyUnrestricted

нопослеокончаниятестированиянезабудьтесновавключитьданнуюопциюспомощьюследующейкоманды:

PSC:>Set-ExecutionPolicyAllSigned

ДлязапускаскриптовpslдостаточнопростонабратьвкоманднойстрокеPowerShellимяфайла.

7.Работасфайловойсистемой

РазберемосновныекомандыWindowsPowerShell,применяемыедляманипуляцийсфайловойсистемой:new-item,copy-item,move-item,rename-itemиremove-item.

  1. СоздадимновыйподкаталогTextFilesвтекущемкаталоге:

PSC:>new-itemTextFiles-itemtypedirectory

Еслиопуститьпараметр-itemtype,тоWindowsPowerShellспросит,чтомысоздаем-файл(file)иликаталог(directory).Отметим,чтоукомандыNew-Itemестьалиас-ni.Всокращенномвиденашаперваякомандабудетвыглядетьтак:

PSC:>niTextFiles-itemtypedirectory

  1. Создайтенескольконовыхфайловвтекущемкаталогеdemo1.txt,demo2.txt,demo3.txt.

  2. Скопируйте всефайлысрасширением*.txtвподкаталогTextFiles,используякомандуCopy-Item(алиасы-cpi,cp,сору). Еслиприменятьданнуюкомандувпакетномфайле,имеетсмыслсделатьееболеепонятной,указавпараметры-path(источник)и-destination(приемник):

PSC:>Copy-Item-path'.\*.txt'-destination'.\TextFiles'

  1. Послевыполнениякомандыкопированиямыиспользуемкомандуset-locationдляпереходавподкаталогTextFiles:

PSC:>Set-LocationTextFiles

  1. Спомощьюкомандыrename-itemпереименовываемфайлdemo1.txtвdemo1.bak.Принеобходимостиможноприменятьопции-pathи-newName:

PSC:>Rename-Itemdemo1.txtdemo1.bak

  1. Послетогокакфайлпереименован,переносимегонаодинуровеньвверх,используякомандуmove-item:

PSC:>Move-Itempsdemo.bak..\

  1. Затемприменяемкомандуset-location,аточнее-ееалиасslдляпереходавдругойкаталог:

PSC:>sl..

  1. МанипуляциисфайловойсистемоймызавершаемудалениемвсегокаталогаTextFiles,используякомандуremove-item.ПосколькувкаталогеTextFilesсодержатсяфайлы,применяетсяопция-recurse.Еслиэтаопциянеуказана,WindowsPowerShellзапроситподтверждениепередвыполнениемкомандыremove-item.

PSC:>Remove-ItemTextFiles –recurse

  1. Для вывода содержимого файлов с расширением BAKв текущей директории: ls -filter "*.bat" | Get-Content

Задания

  1. С помощью окружения PowerShellсоздайте произвольную папку. Перейдите в новую папку. Создайте в ней файлOUT1.txt, содержащий информацию обо всех запущенных на компьютере процессах (вывод команды ps).

PS C:> ni ПАПКА -itemtype directory

PS C:>slПАПКА

PS C:>ps> OUT1.txt

  1. С помощью окружения PowerShellзапустите процесс Wordpad. С помощью методов этого процесса получите следующую информациюSessionId, номер процесса (Handle), используемые системные библиотеки (Modules). Выведите эту информацию в файл OUT2.txt предварив каждый вывод заголовком (название соответствующего свойства).

PS D:\66\44> echo "SessionIDI" >.\OUT2.txt

Источник: https://studfile.net/preview/16379474/