PowerShell - лабораторные работы (информатика - 11 класс, инструментальные средства ИС - средние и высшие образовательные учреждения)
Оценка 4.9

PowerShell - лабораторные работы (информатика - 11 класс, инструментальные средства ИС - средние и высшие образовательные учреждения)

Оценка 4.9
Лабораторные работы +1
pdf
информатика +1
10 кл—11 кл +1
24.02.2017
PowerShell - лабораторные работы (информатика - 11 класс, инструментальные средства ИС - средние и высшие образовательные учреждения)
Лабораторная работа №4. Работа с файлами и папками.pdf

Лабораторная работа №4. Работа с файлами и папками.

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

В консоли PowerShell введите команду dir, нажмите Enter, затем Get-ChildItem D:\Script и снова Enter, посмотрите на результаты. Они одинаковы. Потому что dir является алиасом к Get-Children.

Как дополнительный пример можно привести аналог для dir /S которая рекурсивно выводит список файлов.

Get-ChildItem -Force D:\Script -Recurse

На замену dir *.exe пришла возможность фильтрации элементов при помощи параметров Path, Filter, Include и Exclude.

Добавилась сложная фильтрация элементов при помощи командлета WhereObject (сокращенное написание Where).

Простой пример фильтрации по расширению.

Get-ChildItem -Path C:\Windows | Where {$_.extension -eq ".dll"}

PowerShell использует в качестве подстановочных знаков не только ? и * как это было в cmd.exe, но и группы символов в квадратных скобках.

Поэтому если попробуете найти файл Script[01].ps1 командой

Get-ChildItem ‘.\Script[01].ps1′ То получите ошибку.

В этом случае необходимо использовать параметр -LitealPath

Get-ChildItem  -LiteralPath ‘.\Script[01].ps1′

Более сложный вариант выполнит поиск архивов в папке D:\Backup, созданных после 1 мая 2011 года, размер которых  находится в диапазоне 10-100 Мб.

Get-ChildItem -Path D:\Backup -Recurse -Include *.zip | Where-Object -FilterScript {($_.LastWriteTime -gt "2011-05-01") -and ($_.Length -ge 10mb) -and ($_.Length -le 100mb)}

Опции Include и Exclude работают соответственно своим названиям т.е. первая включает а вторая исключает заданный фильтр из поиска.

$exclude = @(‘*.dll’,‘*.exe’)

$include = @(‘*.txt’,‘*.ps1′)

$result1 = Get-ChildItem "C:\Script" -Recurse -Exclude $exclude

$result2 = Get-ChildItem "D:\Script" -Recurse -Include $include

Копирование файлов.

Аналогом команды copy стал командлет Copy-Item.

Copy-Item -Path          D:\Script\script—01.ps1        -Destination         E:\Backup\27—09— 2011\script—01.ps1

В случае если целевой файл уже существует, при попытке его скопировать, получите ошибку. Для перезаписи целевого файла используется параметр Force:

Copy-Item      -Path      D:\Script\script—01.ps1      -Destination     E:\Backup\27—09—

2011\script—01.ps1 -Force

Ключ Force работает даже когда целевой файл помечен как файл только для чтения.

Копирование дерева папок выполняется той же командой, но с указанием ключа Recurse.

Copy-Item -Path D:\Script -Recurse E:\Backup\27—09—2011

При необходимости копирования определѐнных объектов, например только скриптов PowerShell-а вы можете задать фильтр.

Copy-Item —Filter *.txt  -Path D:\Script -Recurse E:\Backup\27—09—2011

Создание файлов и папок средствами PowerShell производится с помощью командлета New-Item.

Для создания папки придется указать тип элемента «Directory», а для создания файла «File»

New-Item -Path ‘D:\Script\New Folder’ -ItemType "directory"

New-Item -Path ‘D:\Script\New Folder\script-02.ps1′ -ItemType "file"

Старая команда mkdir, позволяющая создавать папки получила новую жизнь в виде алиаса md.

Переименование элементов производится с помощью команды Rename-Item.

Rename-Item .\File—01.ps1 .\File—01.ps1.bak

Удаление производится с помощью Remove-Item.

Удалить вложенные в папку элементы можно при помощи командлета RemoveItem, однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. К примеру, в случае если мы пытаемся удалить папку  d:\Backup\20-092011, содержащую другие элементы, PowerShell предложит подтвердить свои действия. 

Remove-Item d:\Backup\20—09—2011 -Recurse

Практическое применение всего вышесказанного может быть разнообразно.

Например, может быть задача поиска в лог файлах определѐнного выражения по маске ip-адреса «192.168.100.253» с последующим копированием найденного в папку

D:\TEMP, вариантов множество, вот метод поиска:

$current = Get-Date

$Days = "-30"

$start = $current.AddDays($days)

Get-ChildItem D:\Logs —Filter *.log -Recurse | Where-Object {($_.LastWriteTime.Date -ge $Start.Date) -and ($_.LastWriteTime.Date -le $End.Date)} | Select-String "192.168.100.253" | Copy-Item -Destination D:\TEMP

Можно придумать сценарий, когда требуется из определѐнной папки удалять все файлы и папки старше 30 дней.

$Path = "C:\temp"

$Days = "-30"

$CurrentDate = Get-Date

$OldDate = $CurrentDate.AddDays($Days)

Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Item

Или если вам требуется удалять все что есть в папке и в подпапках:

$Path = "C:\temp"

$Days = "-30"

$CurrentDate = Get-Date

$OldDate = $CurrentDate.AddDays($Days)

Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $OldDate } |

Remove-Item

Лабораторная работа №4. Работа с файлами и папками

Лабораторная работа №4. Работа с файлами и папками

Get-ChildItem "C:\Script" -Recurse -Exclude $exclude $result2 =

Get-ChildItem "C:\Script" -Recurse -Exclude $exclude $result2 =

Удаление производится с помощью

Удаление производится с помощью

Remove-Item

Remove-Item
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
24.02.2017