Основные команды для работы с файлами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
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 |
Поиск архивов:
1 2 3 4 5 |
Выполнит поиск архивов в папке 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)} |
Удаление \ Создание \ Переименование \Копирование:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
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 |
Пример с копированием:
1 2 3 4 5 6 7 8 |
Например, может быть задача поиска в лог файлах определенного выражения по маске 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 дней:
1 2 3 4 5 6 7 8 |
Можно придумать сценарий когда на файловой помойке требуется из определенной папки удалять все файлы и папки старше 30 дней. $Path = "C:\temp" $Days = "-30" $CurrentDate = Get-Date $OldDate = $CurrentDate.AddDays($Days) Get-ChildItem $Path | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Item |
Пример сценария удаления файла после 30 дней
1 2 3 4 5 6 7 |
Или если вам требуется удалять все что есть в папке и в подпапках т.е. удаление еще и самих папок. $Path = "C:\temp" $Days = "-30" $CurrentDate = Get-Date $OldDate = $CurrentDate.AddDays($Days) Get-ChildItem $Path -Recurse | Where-Object { $_.LastWriteTime -lt $OldDate } | Remove-Ite |