
Лабораторная работа №1
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ
УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА»
(СПбГУТ)
ФАКУЛЬТЕТ ИНФОКОММУНИКАЦИОННЫХ СЕТЕЙ И СИСТЕМ (ИКСС)
КАФЕДРА ПРОГРАММНОЙ ИНЖЕНЕРИИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ (ПИ И ВТ)
ДИСЦИПЛИНА: «Операционные системы и сети»
Лабораторная работа №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 и сопутствующий ему язык сценариев.