Файлы в PowerShell

Содержание
New-Item: создать файл
Создать файл с помощью echo
Copy-Item: копировать файл
Remove-Item: удалить файл
Rename-Item: переименовать файл
Get-Content -Tail: конец файла
Get-FileHash: контрольная сумма
Распаковка архивов
Похожие статьи

New-Item

Пример создания файла config.toml с помощью New-Item

New-Item -Path . -Name "config.toml" -ItemType "file"

Пример создания файла с конфигурацией PowerShell

New-Item -Path $profile -Force -ItemType "file"

Создать файл с помощью echo

echo $null >> new_file.txt

Copy-Item

Чтобы скопировать файл из текущей директории во вложенную выполните

Copy-Item -Path "имя_файла" -Destination "имя_директории"

Например

Copy-Item -Path "requirements.txt" -Destination "autotest_distr"

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Remove-Item

Удалить файл можно командой Remove-Item

Удалить все файлы из директории C:\Test у которых есть точка в имени

Remove-Item C:\Test\*.*

Скрипт, который удаляет Python .exe файлы из WinodwsApps

# DeletePythonFromWindowsApps.ps1 $CURRENT_USER = $Env:Username $PYPATH = 'C:\Users\' + $CURRENT_USER + '\AppData\Local\Microsoft\WindowsApps\python.exe' $PY3PATH = 'C:\Users\' + $CURRENT_USER + '\AppData\Local\Microsoft\WindowsApps\python3.exe' If (Test-Path -path ${PYPATH}) { Remove-Item $PYPATH } If (Test-Path -path ${PY3PATH}) { Remove-Item $PY3PATH }

Rename-Item

Переименовать файл можно командой Rename-Item

Rename-Item -Path "oldname.txt" -NewName "newname.txt"

РЕКЛАМА хостинга Beget, которым я пользуюсь более десяти лет

Изображение баннера

Конец рекламы хостинга Beget, который я всем рекомендую.

Get-Content

Вам нужно посмотреть только конец файла по аналогии с tail в Linux можно использовать Get-Content флагом -Tail.

Например, чтобы получить последние 100 строк файла 2026-01-19.log

Get-Content -Path "C:\logs\2026-01-19.log" -Tail 100

Если лог нужно смотреть в реальном времени - используйте флаг -Wait

Get-Content -Path "C:\logs\2026-01-19.log" -Wait

Можно совместить -Wait и -Tail и мониторить только последние строки в реальном времени

Get-Content -Path "C:\logs\2026-01-19.log" -Wait -Tail

Get-FileHash

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

Get-FileHash путь_до_файла -Algorithm MD5

Это является аналогом Bash команды md5sum в Linux и md5 в OpenBSD

Проверить файл notes.txt в текущей директории

Get-FileHash notes.txt -Algorithm MD5

--------- ---- ---- MD5 14B17234E237534421B6492B8D757507 C:\Users\Andrei\Downlo…

Распаковать архив

.zip

В PowerShell 5+

Распаковать архив в текущую директорию

Expand-Archive -Path swagger-ui.zip -DestinationPath .

Проверено на 5.1.22621.6060 и 7.4.13

Распаковать архив в заданную директорию

Expand-Archive -Path .\log.zip -DestinationPath .\logs

В PowerShell 2

Из коробоки решения нет, как вариант можно написать свою функцию

function Expand-Archive { param( [Parameter(Mandatory=$true)][string]$Path, [Parameter(Mandatory=$true)][string]$DestinationPath ) if (-not (Test-Path $DestinationPath)) { New-Item -ItemType Directory -Path $DestinationPath | Out-Null } $shell = New-Object -ComObject Shell.Application $zip = $shell.NameSpace($Path) $dest = $shell.NameSpace($DestinationPath) if (-not $zip) { throw "ZIP not found or invalid: $Path" } if (-not $dest) { throw "Destination not accessible: $DestinationPath" } # 16: No progress dialog, 4: No UI on errors, 1024: No confirmation $flags = 16 + 4 + 1024 $dest.CopyHere($zip.Items(), $flags) # Simple wait until file count matches (best-effort for PS2) while ($dest.Items().Count -lt $zip.Items().Count) { Start-Sleep -Milliseconds 200 } } $guest_user = "Andrei" $guest_file = "demo.zip" $path = "C:\Users\$guest_user\Desktop\$guest_file" $dest = "C:\Users\$guest_user\Desktop\demo" Expand-Archive -Path $path -DestinationPath $dest

Распаковать .tar.gz

В PowerShell 7 tar встроен по умолчанию

tar -xvzf .\data\license.tar.gz -C .

В более старых версиях PowerShell придётся пользоваться сторонними инструментами.

Распаковать .gz арихив в PowerShell 5. Проверено на Windows 7 с .NET 4.8 и в PowerShell 7 на Windows 11.

function ungz() { param( [Parameter(Mandatory=$true)][string]$Path, [Parameter(Mandatory=$false)][string]$DestinationPath ) $file = Get-Item $Path if (-not $PSBoundParameters.ContainsKey('DestinationPath')) { $DestinationPath = [System.IO.Path]::Combine( ($file).DirectoryName, ($file).BaseName ) } Write-Host "Destination: $DestinationPath" -f Green $inStream = [System.IO.File]::OpenRead($Path) $outStream = [System.IO.File]::Create($DestinationPath) $gzipStream = New-Object System.IO.Compression.GzipStream( $inStream, [System.IO.Compression.CompressionMode]::Decompress ) $gzipStream.CopyTo($outStream) $gzipStream.Dispose() $outStream.Dispose() $inStream.Dispose() Write-Host "Decompressed $Path to $DestinationPath" -f Green }

Применить можно указывая или не указывая назначение

ungz -Path "C:\Users\A\arch.tar.gz" -DestinationPath "C:\Users\A\output\arch.tar"

ungz -Path "C:\Users\A\arch.tar.gz"

Destination: C:\Users\A\arch.tar Decompressed C:\Users\A\arch.tar.gz to C:\Users\A\arch.tar

Распаковать .tar арихив в PowerShell 5 с помощью 7zip. Проверено на Windows 7 с .NET 4.8 и в PowerShell 7 на Windows 11.

function untar() { param( [Parameter(Mandatory=$true)][string]$Path, [Parameter(Mandatory=$false)][string]$DestinationPath ) $file = Get-Item $Path if (-not $PSBoundParameters.ContainsKey('DestinationPath')) { $DestinationPath = [System.IO.Path]::Combine( ($file).DirectoryName, ($file).BaseName ) } Write-Host "Destination: $DestinationPath" -f Green & "C:\Program Files\7-Zip\7z.exe" x $Path "-o$DestinationPath" Write-Host "Decompressed $Path to $DestinationPath" }

Применить можно указывая или не указывая назначение

untar -Path "S:\pwsh\data\license.tar" -DestinationPath ".\license"

untar -Path "S:\pwsh\data\license.tar"

Destination: S:\pwsh\data\license 7-Zip 25.01 (x64) : Copyright (c) 1999-2025 Igor Pavlov : 2025-08-03 Scanning the drive for archives: 1 file, 829440 bytes (810 KiB) Extracting archive: S:\pwsh\data\license.tar -- Path = S:\pwsh\data\license.tar Type = tar Physical Size = 829440 Headers Size = 10752 Code Page = UTF-8 Characteristics = ASCII Everything is Ok Files: 7 Size: 817069 Compressed: 829440 Decompressed C:\pwsh\data\license.tar to S:\pwsh\data\license

Переиспользуем две предыдущие фукнции, для того чтобы сразу распаковывать .tar.gz архив.

function untargz() { param( [Parameter(Mandatory=$true)][string]$Path, [Parameter(Mandatory=$false)][string]$DestinationPath ) $file = Get-Item $Path $TarPath = [System.IO.Path]::Combine( ($file).DirectoryName, ($file).BaseName ) ungz -Path $Path -DestinationPath $TarPath if (-not $PSBoundParameters.ContainsKey('DestinationPath')) { $file = Get-Item $TarPath $DestinationPath = [System.IO.Path]::Combine( ($file).DirectoryName, ($file).BaseName ) } Write-Host "Destination: $DestinationPath" -f Green untar -Path $TarPath -DestinationPath $DestinationPath Write-Host "Decompressed $Path to $DestinationPath" Write-Host "Cleanup: removing $TarPath" -f Yellow Remove-Item $TarPath }

Здесь также сохранена возможность указывать или не указывать назначение

untargz -Path "C:\Users\NS\Desktop\license.tar.gz" -DestinationPath "C:\Users\NS\Desktop\license" untargz -Path "C:\Users\NS\Desktop\license.tar.gz"

Автор статьи: Андрей Олегович

Похожие статьи
PowerShell
Alias
Основы
Запросы к REST API
Пользователи
Сеть
Установка
Файлы
Функции
Циклы
Ошибки PowerShell

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: