
лаба Управление Windows с помощью командной строки и PowerShell ОС
.docxМИНОБРНАУКИ РОССИИ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
«ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
Кафедра САПР
ОТЧЕТ
по лабораторной работе № 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 дают возможность более эффективно управлять системой, автоматизировать рутинные операции и решать возникающие проблемы.