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

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

.docx
Скачиваний:
6
Добавлен:
15.08.2023
Размер:
663.31 Кб
Скачать

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ

УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

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

ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»

(СПбГУТ)

ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)

КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)

ДИСЦИПЛИНА: «Операционные системы и сети»

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

Анализатор приложений на диске

Выполнил:

Цыганков М.А.

Козлов Н.С.

Тюришев М.А.

Подпись____________

Принял:

Дагаев А.В.

Подпись____________

«_____»________ 2021

Цель работы

Написать программу для анализа приложений на диске в системе Microsoft Windows с использованием средств PowerShell.

Функционал

  • Просмотр каталога

    • Выводит на экран список папок и файлов, находящихся в текущем каталоге.

  • Просмотр зависимостей

    • Выводит на экран список зависимостей, используемых переданным в функцию приложением.

  • Изменение каталога

    • Позволяет изменить текущий каталог.

  • Перезапуск программы

    • Очищает историю работы программы.

  • Выход из программы

    • Завершает работу программы.

Примеры работы программы

Код программы

# WinXPlore 1.0

################### VARIABLES ###################

$global:currentDirectory = $NULL

################### FUNCTIONS ###################

function WinXPlore_PrintApplicationHeader {

    Write-Host "+-------------------------------------------------------------------+"

    Write-Host "| __      __.__       ____  _____________.__                        |"

    Write-Host "|/  \    /  \__| ____ \   \/  /\______   \  |   ___________   ____  |"

    Write-Host "|\   \/\/   /  |/    \ \     /  |     ___/  |  /  _ \_  __ \_/ __ \ |"

    Write-Host "| \        /|  |   |  \/     \  |    |   |  |_(  <_> )  | \/\  ___/ |"

    Write-Host "|  \__/\  / |__|___|  /___/\  \ |____|   |____/\____/|__|    \___  >|"

    Write-Host "|       \/          \/      \_/                                  \/ |"

    Write-Host "+-------------------------------------------------------------------+"

    Write-Host "|                                                                   |"

    Write-Host "|                    Developed by Nikita Kozlov                     |"

    Write-Host "|                   github.com/Nyarstot/WinXPlore                   |"

    Write-Host "|                                                                   |"

    Write-Host "+-------------------------------------------------------------------+"

    Write-Host ""

}

function WinXPlore_CheckPath {

    param (

        $Path

    )

    if (Test-path -Path $Path) {

        return $true

    } else {

        return $false

    }

}

function WinXPlore_GlobalSlashChecker {

    if ($global:currentDirectory.endswith("\")) {

    } else {

        $global:currentDirectory = [string]::Concat($global:currentDirectory, "\")

    }

}

function WinXPlore_TableOfDirectoryContent {

    Get-ChildItem -Path $global:currentDirectory |

    Select-Object -Property BaseName, Extension, Length |

    Format-Table -AutoSize -Wrap

}

function WinXPlore_ShowDependencies {

    param (

        $Path

    )

    $tmpPath = [string]::Concat($global:currentDirectory, $Path)

    $date = Get-Date -Format "MM_dd_yyyy_HHmm"

    $logName = [string]::Concat($Path, "_", $date)

    Start-Process -PassThru $tmpPath | Get-Process -Module |

    Format-Table -AutoSize -Wrap | Out-File -FilePath ./out/$logName.txt

    Get-Content -Path ./out/$logName.txt

}

function WinXPlore_ChangeDirectory {

    param (

        $Path

    )

   

    $testDir = $Path

    if (WinXPlore_CheckPath -Path $testDir == $true) {

        $global:currentDirectory = $testDir

        WinXPlore_GlobalSlashChecker

        Write-Host "New directory has been successfully set" -ForegroundColor green

    } else {

        Write-Host "The directory does not exist or is not written correctly" -ForegroundColor -red

        Write-Host "Directory info has been return to previous condition" -ForegroundColor red

    }

}

###################  PROGRAM  ###################

while (1) {

    Clear-Host

    WinXPlore_PrintApplicationHeader

    Write-Host "Enter full directory path you want to work with"

    Write-Host -NoNewline "WinXPlore:> "

    $directory = Read-Host

    if (WinXPlore_CheckPath -Path $directory == $true) {

        $global:currentDirectory = $directory

        WinXPlore_GlobalSlashChecker

        Write-Host "The directory has been successfully picked!" -ForegroundColor green

        Write-Host ""

        [int]$state = 1

        while ($state -ne 0) {

            Write-Host "Show Directory [1] | Show Dependencies [2] | Change Directory [3] | Restart [4] | Quit [5]"

            Write-Host -NoNewline "WinXPlore:> "

            $userChoise = Read-Host

            switch ($userChoise) {

                1 {WinXPlore_TableOfDirectoryContent; break}

                2 {

                    Write-Host "Enter application from current directory"

                    Write-Host -NoNewline "WinXPlore:> "

                    $app = Read-Host

                    WinXPlore_ShowDependencies -Path $app

                    ;break}

                3 {

                    Write-Host "Enter new directory"

                    Write-Host -NoNewline "WinXPlore:> "

                    $directory = Read-Host

                    WinXPlore_ChangeDirectory -Path $directory

                    ;break}

                4 {$state = 0; break}

                5 {exit}

            }

        }

    } else {

        Write-Host "The directory does not exist or is not written correctly" -ForegroundColor red

    }

}

Вывод

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

Соседние файлы в предмете Операционные системы и среды