Перечисление всех файлов и папок в папке
Все элементы можно получить непосредственно в папке с помощью Get-ChildItem. Для отображения скрытых и системных элементов добавьте необязательный параметр Force. Например, эта команда отображает прямое содержимое диска C:PowerShell.
Get-ChildItem -Path C:\ -ForceКоманда перечисляет только непосредственно содержащиеся элементы, например команду dir в cmd.exe оболочке UNIX или ls в ней. Чтобы отобразить элементы в вложенной папке, необходимо указать параметр Recurse . Следующая команда выводит список всех элементов на C: диске:
Get-ChildItem -Path C:\ -Force -RecurseКомандлет Get-ChildItem позволяет отфильтровать элементы с помощью параметров Path, Filter, Include и Exclude, но обычно осуществляется лишь фильтрация по имени. Вы можете выполнять сложную фильтрацию на основе других свойств элементов с помощью Where-Object.
Следующая команда находит все исполняемые файлы в папке Program Files, которые были изменены после 1 октября 2005 года, и они не меньше 1 мегабайт или больше 10 мегабайт:
Get-ChildItem -Path $env:ProgramFiles -Recurse -Include *.exe |
Where-Object -FilterScript {
($_.LastWriteTime -gt '2005-10-01') -and ($_.Length -ge 1mb) -and ($_.Length -le 10mb)
}
Копирование файлов и папок
Копирование выполняется с помощью командлета Copy-Item. Следующая команда создает резервную копию скрипта профиля PowerShell:
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak')
}Команда Test-Path проверка, существует ли скрипт профиля.
Если целевой файл уже существует, то попытка копирования завершается неудачей. Чтобы перезаписать имеющийся целевой файл, используйте параметр Force.
if (Test-Path -Path $PROFILE) {
Copy-Item -Path $PROFILE -Destination $($PROFILE -replace 'ps1$', 'bak') -Force
}Эта команда работает, даже если целевой объект доступен только для чтения.
Так же выполняется и копирование папок. Эта команда копирует папку C:\temp\test1 в новую папку C:\temp\DeleteMe рекурсивно.
Copy-Item C:\temp\test1 -Recurse C:\temp\DeleteMeМожно также скопировать избранные элементы. Следующая команда копирует все .txt файлы, содержащиеся в любом месте в C:\dataC:\temp\text:
Copy-Item -Filter *.txt -Path c:\data -Recurse -Destination C:\temp\text
Вы по-прежнему можете выполнять собственные команды, такие как xcopy.exe и robocopy.exe копировать файлы.
Создание файлов и папок
Создание новых элементов работает одинаково для всех поставщиков PowerShell. Если поставщик PowerShell имеет несколько типов элементов, например поставщик FileSystem PowerShell различает каталоги и файлы, необходимо указать тип элемента.
Эта команда создает папку C:\temp\New Folder:
New-Item -Path 'C:\temp\New Folder' -ItemType DirectoryЭта команда создает пустой файл C:\temp\New Folder\file.txt.
New-Item -Path 'C:\temp\New Folder\file.txt' -ItemType FileУдаление всех файлов и папок в папке
Удалить вложенные элементы можно с помощью командлета Remove-Item, однако он потребует подтверждения удаления, если элемент сам что-нибудь содержит. Например, если вы попытаелись удалить папку C:\temp\DeleteMe , содержащую другие элементы, PowerShell запрашивает подтверждение перед удалением папки:
Remove-Item -Path C:\temp\DeleteMeЕсли вам не нужно запрашивать каждый содержащийся элемент, укажите параметр Recurse :
Remove-Item -Path C:\temp\DeleteMe -Recurse📲 Мы в MAX
👉 @sysadminof