Основные команды для работы с файлами:
Get-PSDrive - покажет все диски системы
Set-Location c: - перейти на диск c: (или cd c:)
Get-Content - покажет содержимое объекта (Объектом может быть всё что угодно, например, файл)
ls -filter "*.bat" | Get-Content - отобразить на экране текст, который содержится во всех файлах формата bat в папке.
Set-Content - записать/сохранить что либо
Get-Childitem c:\distr - отобразит содержимое директории
Get-ChildItem -Force с:\distr -Recurse - отобразит содержимое директории с:\distr
ls -Recurce c:\distr - отобразит содержимое директории с:\distr и всех ее каталогов
dir -Recurce c:\distr - отобразит содержимое директории с:\distr и всех ее каталогов
ls -Recurse C:\distr -Filter *.txt - отобразит содержимое директории с:\distr и всех ее каталогов где есть *.txt
Get-ChildItem -Path C:\Windows | Where {$_.extension -eq ".dll"} - покажет из c:\windows все файлы с *.dll
Поиск архивов:
Выполнит поиск архивов в папке D:\Backup, созданных после 1 мая 2011 года,
размер которых находится в диапазоне 10-100 Мб.
Опции Include и Exclude работают соответственно своим названиям т.е.
первая включает а вторая исключает заданный фильтр из поиска.
Get-ChildItem -Path D:\Backup -Recurse -Include *.zip | Where-Object -FilterScript {($_.LastWriteTime -gt "2011-05-01") -and ($_.Length -ge 10mb) -and ($_.Length -le 100mb)}
Удаление \ Создание \ Переименование \Копирование:
Remove-Item - удалить объект (Объектом может быть всё что угодно, например, файл) Remove-Item c:\trash -Recurse - удалить директорию и все ее содержимое New-Item - создать новый объект (Объектом может быть всё что угодно, например, файл) New-Item -Path ‘с:\New Folder’ -ItemType "directory" - создаем директорию New-Item -Path ‘c:\file.tzt’ -ItemType "file" - создаем файл Rename-Item - переименовать обьект (Объектом может быть всё что угодно, например, файл) Rename-Item .\File.txt .\File.txt1 - переименовываем File.txt File.txt1 в текущем каталоге Copy-Item - копировать объект (Объектом может быть всё что угодно, например, файл) Copy-Item -Path c:\file.txt -Destination E:\file1.txt - копирование файла file.txt в file1.txt Force Copy-Item -Path c:\file.txt -Destination E:\file1.txt -Force - копирование с перезаписью файла file.txt в file1.txt
Пример с копированием:
Например, может быть задача поиска в лог файлах определенного выражения по
маске 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 дней:
Можно придумать сценарий когда на файловой помойке
требуется из определенной папки удалять все файлы и папки старше 30 дней.
$Path = "C:\temp"
$Days = "-30"
$CurrentDate = Get-Date
$OldDate = $CurrentDate.AddDays($Days)
Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Item
Пример сценария удаления файла после 30 дней
Или если вам требуется удалять все что есть в папке и в подпапках т.е. удаление еще и самих папок.
$Path = "C:\temp"
$Days = "-30"
$CurrentDate = Get-Date
$OldDate = $CurrentDate.AddDays($Days)
Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Ite