Файлы в PowerShell
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"
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 |