Коротко: встроенный `Compress-Archive` в PowerShell **не поддерживает** создание ZIP‑архивов с паролем. Для этого нужно использовать стороннюю утилиту (например, 7‑Zip) и вызывать её из PowerShell. [papermark](
https://www.papermark.com/blog/how-to-encrypt-zip-file)
## Почему нельзя через `Compress-Archive`
- `Compress-Archive` (и `Expand-Archive`) работают только с обычными ZIP‑архивами без шифрования. [dargslanpublishing](
https://www.dargslanpublishing.com/how-to-zip-and-unzip-files-in-powershell/)
- В PowerShell нет встроенной команды для создания password‑protected ZIP. [papermark](
https://www.papermark.com/blog/how-to-encrypt-zip-file)
## Практический способ: 7‑Zip из PowerShell
### 1. Установить 7‑Zip
- Скачайте с [https://www.7-zip.org/](
https://www.7-zip.org/) и установите (обычно в `C:\Program Files\7-Zip\`). [powershelltips](
https://www.powershelltips.com/powershell-compress-archive-vs-7zip/)
- Убедитесь, что `7z.exe` доступен по пути, например:
```powershell
$sevenZip = 'C:\Program Files\7-Zip\7z.exe'
& $sevenZip
```
### 2. Создать ZIP с паролем
Пример: заархивировать папку `C:\Data\Report` в `C:\Archives\Report.zip` с паролем.
```powershell
$sevenZip = 'C:\Program Files\7-Zip\7z.exe'
$source = 'C:\Data\Report\*' # * чтобы не класть саму папку Report в корень архива
$archive = 'C:\Archives\Report.zip'
$password = 'YourStrongPassword123!' # лучше брать из secure string / env
& $sevenZip a -tzip -mem=AES256 -p"$password" -- "$archive" "$source"
```
Ключи:
- `a` – добавить файлы в архив. [powershelltips](
https://www.powershelltips.com/powershell-compress-archive-vs-7zip/)
- `-tzip` – формат ZIP. [powershelltips](
https://www.powershelltips.com/powershell-compress-archive-vs-7zip/)
- `-mem=AES256` – шифрование AES‑256 (для ZIP). [itechguides](
https://www.itechguides.com/3-easy-ways-to-password-protect-a-zip-file-on-windows/)
- `-p"PASSWORD"` – пароль (без пробела после `-p`). [tutorialpedia](
https://www.tutorialpedia.org/blog/how-to-create-a-zip-archive-with-powershell/)
- `--` – разделитель между опциями и путями (защита от путей, начинающихся с `-`). [powershelltips](
https://www.powershelltips.com/powershell-compress-archive-vs-7zip/)
Если хотите скрыть ещё и имена файлов внутри архива, используйте формат 7z:
```powershell
& $sevenZip a -t7z -mhe=on -p"$password" -- "C:\Archives\Secure.7z" "C:\Data\Report\*"
```
`-mhe=on` шифрует заголовки, чтобы список файлов тоже был защищён. [powershelltips](
https://www.powershelltips.com/powershell-compress-archive-vs-7zip/)
### 3. Вариант с безопасным вводом пароля
Чтобы пароль не светился в скрипте:
```powershell
$secure = Read-Host "Введите пароль" -AsSecureString
$bstr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secure)
$password = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr)
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr)
& $sevenZip a -tzip -mem=AES256 -p"$password" -- "C:\Archives\Report.zip" "C:\Data\Report\*"
```
После использования переменную `$password` лучше очистить:
```powershell
$password = $null
```
## Если нельзя ставить 7‑Zip
Альтернативы с паролем в ZIP:
- WinRAR (`rar.exe a -ep -pPASSWORD archive.zip files...`) – требует установки WinRAR. [papermark](
https://www.papermark.com/blog/how-to-encrypt-zip-file)
- Другие CLI‑архиваторы (peazip, bandizip и т.п.) с поддержкой ZIP+AES.
Но без какого‑либо внешнего архиватора создать именно **ZIP с паролем** средствами чистого PowerShell/ .NET штатно нельзя. [dargslanpublishing](
https://www.dargslanpublishing.com/how-to-zip-and-unzip-files-in-powershell/)
Если нужно, могу дать готовую функцию PowerShell‑скрипта, которая принимает путь, имя архива и пароль, и делает всё вышеописанное одним вызовом.
Updated: 10 September 2026, 13:05:43
Про чертежи
А щас пойду смотреть где я вчера, просто на другой машине.
Updated: 10 September 2026, 13:09:58
https://spectrkit.ru/