Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

лаба Управление Windows с помощью командной строки и PowerShell ОС

.docx
Скачиваний:
0
Добавлен:
08.07.2025
Размер:
2.61 Mб
Скачать

МИНОБРНАУКИ РОССИИ

САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

Кафедра САПР

ОТЧЕТ

по лабораторной работе № 2.2

по дисциплине «Операционные системы»

Тема: Управление Windows с помощью командной строки и PowerShell

Студентки гр. 3352

Преподаватель

Санкт-Петербург

2025

Цель работы

Знакомство с управлением компонентами операционной системы Windows с помощью командной строки и PowerShell.

Ход работы

Упражнение 1 – Использование инструментов командной строки.

Первым шагом запускаем командную строку от имени администратора.

Рисунок 1 - Запуск командной строки.

Далее открываем пункт “Свойства”.

Рисунок 2 - Параметры “Настройки” и “Шрифт”.

В общих настройках можно изменить размер курсора, настроить сохранение и отображение истории команд, изменять режим вставки текста и тд. Во вкладке “Шрифт” можно выбрать размер шрифта, сам шрифт и начертание.

Рисунок 3 - Параметры “Расположение” и “Цвета”.

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

После сохранения всех настроек окно командной строки выглядит так:

Рисунок 4 - Обновленное окно командной строки.

Далее просмотрим введем “lelp” и просмотрим список ОС команд.

Рисунок 5 - Список команд.

Для того, чтобы получить информацию о каждой команде, нужно ввести ввести ее название и нажать enter. Например, просмотрим информацию о команде CACLS.

Рисунок 6 - Информация о команде CACLS.

Из списка команд находим пары команд, дублирующих друг друга. Например, команды MD и MKDIR, REN и RENAME.

а)

б)

Рисунок 7(а,б) - Пары дублирующих команд.

Как мы поняли, пара команд MD и MKDIR используются для создания нового каталога, и, фактически являются одной и той же командой, только MD - сокращение от MCDIR. То же самое с парой REN и RENAME, они обе предназначены для переименования файла или каталога, REN является сокращением от RENAME.

Парой команд, где одна является ссылкой на другую, является, например DEL и ERASE, которые удаляют файлы.

Вводим в командной строке “HELP>C:\CmdList.txt”, после чего открываем этот файл в блокноте.

Рисунок 8 - Текстовый файл со списком команд.

Как мы видим, в текстовом файле находится весь список команд, который до этого мы видели в окне командной строки.

Далее выполняем команду “HELP >>C:\CmdList.txt”.

Рисунок 9 - Файл с двумя списками команд.

Можно заметить, что содержимое файла продублировалось, и прежний файл увеличился в размере в два раза.

Введем предыдущую команду и посмотрим результат.

Рисунок 10 - Файл с одним списком команд.

Мы выяснили, что команда HELP>C:\CmdList.txt записывает команды в файл, если он пуст или перезаписывает содержимое, если в файле уже что-то есть. А команда HELP>>C:\CmdList.txt просто добавляет в конец файла список команд, не перезаписывая существующее содержимое.

Вводим команду COPY C:\CmdList.txt CON.

Рисунок 11 - Выполнение команды COPY C:\CmdList.txt CON.

Содержимое файла CmdList.txt вывелось на экран. Это произошло благодаря командам COPY (которая скопировала содержимое указанного файла) и CON (которая вывела скопированные данные на консоль).

Далее выводим список всех файлов в каталоге C:\Windows, имя которых начинается с буквы “T”. Это можно выполнить с помощью DIR с шаблоном T*.

Рисунок 12 - Команды, начинающиеся на “Т”.

Сформируем и выполним команду, которая перезагрузит компьютер через 15 секунд, не спрашивая разрешения закрыть открытые файлы. Для этого вводим shutdown /r /t 15 /f.

Рисунок 13 - Выключение ВМ.

Создадим в текстовом редакторе файл с расширением .CMD и напишем в нём последовательность команд, выводящих на экран название этого файла и список файлов из каталога C:\Windows, имя которых начинается с указанной буквы.

Рисунок - Последовательность специальных команд.

Опишем данные команды: @echo off: Отключает отображение команд в командной строке. echo file name: %0: Выводит на экран название командного файла (%0 - это специальная переменная, содержащая имя файла). echo The list of files in C:\Windows, starting with a letter с %1:: Выводит на экран сообщение. dir C:\Windows\%1*: Выводит список файлов и подкаталогов в C:\Windows, имена которых начинаются с символа, переданного в качестве первого параметра (%1). pause: Останавливает выполнение скрипта и ожидает нажатия любой клавиши. start notepad.exe: Запускает текстовый редактор Notepad.

Сохраним файл и запустим его, указав в качестве параметров буквы “Т” и “Q”.

Рисунок 14 - Выполнение команд.

Упражнение 2 – Использование внешних наборов инструментов (Sysinternals).

Интерфейс утилит Sysinternals в целом следует общему принципу интерфейса командной строки Windows: команды запускаются с параметрами, разделенными пробелами. Однако, по сравнению со стандартными командами Windows (например, ipconfig), утилиты Sysinternals часто имеют более сложный синтаксис с большим количеством опций и ключей. Например, утилита PsInfo предоставляет огромное количество информации о системе, которую нельзя получить стандартными командами Windows. Сообщения об ошибках, как правило, информативны, но иногда могут быть специфичными. Некоторые утилиты (например, Process Explorer) предлагают как графический интерфейс, так и возможности командной строки, что расширяет возможности их использования. Утилиты Sysinternals предоставляют более детальную информацию и расширенные возможности, чем стандартные средства Windows. Их можно использовать для поиска проблем, мониторинга производительности, а также для автоматизации задач.

Для примера рассмотрим утилиты PsList и PsInfo из пакета Sysinternals.

PsList. Утилита, которая в зависимости от указанного параметра показывает подробную информацию об определенном процессе. В нашем случае, мы выбрали показ деталей памяти.

Рисунок а - Команда PsList из Sysinternals.

Аналог, встроенный в Windows, tasklist:

Рисунок б - Команда tasklist Windows.

Как можно заметить, информации, которая получена с помощью скачанной утилиты больше, чем во встроенной функции.

PsInfo. Инструмент командной строки, который собирает ключевую информацию о локальной или удаленной системе, включая тип установки, версию ядра, количество процессоров и их тип, объем физической памяти, дату установки системы.

Рисунок в - Команда PsInfo из Sysinternals.

Аналог, встроенный в Windows, systeminfo:

Рисунок г - Команда systeminfo Windows.

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

Упражнение 3 – Запуск PowerShell. Получение справочной информации.

Первым шагом запускаем PowerShell от имени администратора и вводим “get-command”.

Рисунок 15 - Запуск PowerShell.

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

Далее, используя шаблоны подстановки, выводим на экран командлеты, работающие с файлами.

Рисунок 16 - Вывод командлетов, работающих с файлами.

Выполним пару команд, например Get-ChildItem и Rename-Item.

Рисунок 17 - Выполнение команды Get-ChildItem.

Параметр Path указывает путь к папке, содержимое которой нужно перечислить. Здесь это «C:\Windows\System32». Filter позволяет отфильтровать результаты, чтобы отображались только элементы, соответствующие указанному шаблону. Здесь это «*.dll», то есть все файлы с расширением .dll.

Рассмотрим команду Rename-Item.

а)

б)

Рисунок 18 (а,б) - Название файла до и после выполнения команды Rename-Item.

Path указывает путь к файлу или папке, которые нужно переименовать (C:\MyFolder\OldName.txt). Параметр NewName указывает новое имя для файла или папки. Force заставляет команду выполнить операцию, даже если целевой файл уже существует. (В данном случае, если в папке уже есть файл с именем NewName.txt, он будет перезаписан. Без параметра Force команда выдаст ошибку.)

Далее находим командлет, выводящий список всех активных в данный момент сервисов.

а) - Все сеансы.

б) - Активные сеансы.

Рисунок 19 (а,б) - Выполнение команды Get-Service.

Следующим шагом убедимся в работе алиасов, выполняющих из среды PowerShell команды Dir командной строки Windows.

Рисунок 20 - Выполнение команды Dir.

Как мы видим, Dir выводит список файлов и папок в текущей директории.

Далее введем Get-Alias Dir

Рисунок 21 - Get-Alias Dir.

Как видно на рисунке, Dir в PowerShell является псевдонимом (алиасом) для командлета Get-ChildItem.

Следующим вызовем командлет, аналогичный команде Dir.

Рисунок 22 - Вызов Get-ChildItem.

Эта команда выводит список файлов и папок в текущей директории.

С помощью командлета «Show-Command» определим список параметров командлета Get-Process и запустим его с указанием имени текущего компьютера.

Рисунок 23 - Окно, в которое мы указали имя ВМ.

Show-Command Get-Process показывает графическое окно с параметрами Get-Process. в которое мы вводим название нашей виртуальной машины.

Далее появляется следующая строка с Get-Process, а после нажатия Enter выводится информация.

Рисунок 24 - Выполнение Get-Process.

Как мы видим, вывелось точное название.

Далее запускаем Get-Process с командной строки PowerShell с указанием в качестве параметра имени текущего компьютера. Для этого вводим $computerName = $env:COMPUTERNAME. С помощью этой команды получаем имя текущего компьютера.

Рисунок 25 - Выполнение Get-Process -ComputerName $computerName.

Находим и запускаем командлет, выводящий информацию о текущих IP адресах нашего компьютера.

Рисунок 26 - Вызов команды Get-NetIPAddress.

С помощью командлета Get-Process выводим информацию о текущих процессах в текстовый файл Proc-Info.txt. Для этого вызываем ряд команд: $homeDir = $env:USERPROFILE (Путь к домашней директории пользователя); $filePath = Join-Path -Path $homeDir -ChildPath "Proc-Info.txt" (Полный путь к файлу); Get-Process | Out-File -FilePath $filePath; Write-Host "Информация сохранена в файл: $filePath".

Рисунок 27 - Вывод информации посредством ввода ряда команд.

Используя механизма конвейера, отсортируем информацию, выдаваемую Get-Process по имени процесса.

Рисунок 28 - Вызов Get-Process | Sort-Object Name.

Подсчитаем количество выведенных на экран процессов.

Рисунок 29 - Подсчет процессов.

Как мы видим, количество выведенных процессов равно 74. Для того, чтобы показать лишь это число, введем (Get-Process | Measure-Object).Count

Рисунок 30 - Подсчет процессов другим способом.

Оставим в выводе только процессы, имена которых начинаются на букву «M».

Рисунок 31 - Процессы на букву “М”.

Далее выведем этот результат в переменную $i.

Рисунок 32 - Создание переменной $i и присвоение ей объектов на букву “М”.

Просмотрим содержимое этой переменной. Для этого введем сначала $i, а затем $i | Format-List —- для более подробной информации.

Рисунок 33 - Просмотр содержимого переменной.

После этого шага проведем работу с нетипизированными переменными. Для начала создадим переменную $I со значением 9 и проверим ее.

Рисунок 34 - Создание и проверка переменной $I.

Далее проверим реальный тип этой переменной.

Рисунок 35 - Проверка типа переменной.

Следующим шагом задаем этой переменной значение «Строка текста» и проверяем реальный тип этой переменной.

Рисунок 36 - Изменение значения переменной.

Теперь проверим переменные. Для этого проверим два условия.

Рисунок 37 - Проверка переменных.

Как мы видим, переменные совпали, о чем нам сказало сообщение “одно и то же”.

Определим количество букв в строке.

Рисунок 38 - Команда для определения длины строки.

В строке 13 букв.

Мы закончили работу с нетипизированными переменными. Далее проделаем работу с типизированными переменными.

Первым шагом создаем переменную $k целого типа int со значением 5. Попробуем присвоить ей значение «Строка 2».

Рисунок 39 - Попытка изменить значение переменной.

Как мы поняли, PowerShell позволяет строго типизировать переменные. Когда мы указываем int, переменная $k может содержать только целые числа. При попытке присвоить ей строку, PowerShell выдает ошибку. `try...catch` – конструкция для обработки исключений, позволяющая скрипту не останавливаться при возникновении ошибки.

Далее создаем переменную строкового типа $s и присваиваем ей значение переменной $k.

Рисунок 40 - Создание новой переменной.

Проделаем работу с массивами. Создаем массив $m с содержимым из пяти разных строк, после чего выводим на экран значение первого элемента массива.

Рисунок 41 - Вывод на экран одного из элементов массива.

Далее добавляем еще один элемент массива “Еще строка (6)”. Выводим на экран содержимое всего массива. Как дела у меня глаза устали отдохни да тут не так много осталось (мне просто лень идти убираться)

Рисунок 41 - Вывод всего массива

Следующим шагом удалим второй элемент массива и снова выведем на экран содержимое всего массива.

Рисунок 42 - Вывод всего массива после удаления элемента.

Далее проделаем работу со списками массивов. Для этого создаем список массивов $ArrList с тремя текстовыми массивами и добавляем к нему новый массив.

Рисунок 43 - Вывод списка массивов.

Выведем на экран значение последнего массива.

Рисунок 44 - Вывод на экран двух последних элементов.

Удаляем первый элемент списка и сразу после этого удаляем элемент массива с одним из имеющихся имен.

Рисунок 45 - Удаление двух элементов из массива.

После этого заносим в $ArrList список работающих в ОС сервисов с названиями, начинающимися на букву “S”. Выведем на экран содержимое массива.

Рисунок 46 - Список сервисов, начинающихся на букву “S”.

Теперь проделаем работу с Hash Table. Создадим хэш-таблицу с тремя элементами “Name”, “Age”, “City”.

Рисунок 47 - Вывод Хэш-таблицы.

Добавим туда и удалим один из элементов “Age”.

Рисунок 48 - Удаление одного из элементов.

Изменяем значение одного из оставшихся элементов и выводим всю таблицу.

Рисунок 49 - Вывод хэш-таблицы.

Проведем проверку области видимости.

Запустим второй экземпляр PowerShell. Проверим, видны ли в нем переменные и массивы, созданные нами до этого в первом экземпляре.

Рисунок 50 - Проверка видимости переменных и массивов.

Как можем заметить, переменные не видны.

Далее запускаем скрипт, после чего определим политику исполнения скриптов как Restricted.

Рисунок 51 - Запуск скрипта.

Запустим PowerShell ISE и включим окно скрипта через меню.

Рисунок 52 - Открытие окна скрипта.

В окне скрипта создаем переменную $F = 8 и выводим её значение на экран. Выполним скрипт через кнопку верхнего меню.

Рисунок 53 - Запуск скрипта.

Сохраняем скрипт с именем Test1.ps1. После чего в файловом менеджере дважды щелкнем по этому скрипту.

Рисунок 54 - Открытие файла Test1.

Как мы видим, записанные данные сохранились.

Далее запустим скрипт с помощью правой кнопки мыши.

Рисунок 55 - Запуск скрипта.

Нажмем “выполнить с помощью PowerShell”. Программа выведет “8”. В PowerShell ISE файл не запускается, так как политика установлена как restricted (смотреть первый скриншот из этого задания).

Рисунок 56 - Ошибка открытия файла через PowerShell ISE.

Изменим политику от имени администратора в PowerShell.

Рисунок 57 - Изменение политики.

Теперь скрипт запускается.

Рисунок 58 - Корректный запуск скрипта.

В PowerShell ISE выведем строки нашего скрипта построчно. Для этого нажимаем на кнопку, указанную на скрине, предварительно выделив нужный кусочек текста. Программа выводит конкретно его.

Рисунок 59- Вывод строк скрипта.

Изучим возможности работы со структурными подсказками в окне команд PowerShell. Первым шагом используем get-command.

Рисунок 60 - Вызов Get-command.

Далее нажимаем Tab, и команда дописывается за нас. Нажимаем после начала ввода ctrl+пробел.

Рисунок 61 - Выбор “да” или “нет”.

Затем после выбора “y” = yes выводятся все команды начинающиеся в нашем примере с get-.

Рисунок 62- Вывод всех команд, начинающихся на “get-”.

Изучим возможности поиска команд по имени и описанию в правом окне.

Рисунок 63 - Открытие правого окна.

Начинаем вводить имя, и нам показывают доступные команды.

Рисунок 64 - Список команд, начинающихся на “clea”.

Выбираем подходящую команду.

Рисунок 65 - Команда “Clear-History”.

Нажимаем на знак “?”, чтобы получить дополнительные сведения (help).

Рисунок 66 - Вывод дополнительных сведений.

Вывод

В ходе лабораторной работы мы пробовали мыслить как системный администратор: понимать логику работы операционной системы и решать задачи, используя инструменты командной строки и PowerShell. Данная работа нацелена дать понимание структуры файловой системы, процессов, сервисов, сетевых настроек и других важных компонентов. Мы научились находить справочную информацию о командах и командлетах, провели работу с массивами, списками массивов и хэш-таблицами и т.д. Теперь мы можем написать скрипты, которые будут автоматически выполнять определенные действия, такие как резервное копирование данных, мониторинг системы и др., что значительно экономит время и повышает производительность. Знакомство с Sysinternals Suite позволило оценить возможности расширенного анализа системы и процессов, недоступные в стандартных инструментах Windows.

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