কম্পিউটার

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

আপনি জিপ সংরক্ষণাগার তৈরি করতে এবং সেগুলি বের করতে পাওয়ারশেলের বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন। PowerShell 5.0-এ (এই PowerShell সংস্করণটি Windows 10-এ ডিফল্টরূপে ইনস্টল করা থাকে), একটি পৃথক মডিউল Microsoft.PowerShell.Archive সহজলভ্য. Windows এর পুরানো সংস্করণগুলিতে, আপনি ZipFile ব্যবহার করতে পারেন৷ আর্কাইভ করার জন্য .NET ফ্রেমওয়ার্ক থেকে ক্লাস।

Microsoft.PowerShell.Archive মডিউলে শুধুমাত্র দুটি cmdlet আছে (C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive):

  • কম্প্রেস-আর্কাইভ
  • প্রসারিত-আর্কাইভ

Get-Command -Module Microsoft.PowerShell.Archive | Format-Table -AutoSize

CommandType Name             Version Source
----------- ----             ------- ------
Function    Compress-Archive 1.0.1.0 Microsoft.PowerShell.Archive
Function    Expand-Archive   1.0.1.0 Microsoft.PowerShell.Archive

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

আসুন আপনার PowerShell স্ক্রিপ্টগুলিতে ZIP সংরক্ষণাগার তৈরি এবং নিষ্কাশন করতে এই cmdlets ব্যবহার করার উদাহরণ দেখি৷

PowerShell:কম্প্রেস-আর্কাইভ দিয়ে জিপ আর্কাইভ তৈরি করুন

কম্প্রেস-আর্কাইভ কমান্ডের নিম্নলিখিত সিনট্যাক্স রয়েছে:

Compress-Archive [-Path] String[] [-DestinationPath] String  [-CompressionLevel String ] [-Update]

  • পথ আর্কাইভ করা ফাইল বা ফোল্ডারের পথ নির্দিষ্ট করতে প্যারামিটার ব্যবহার করা হয়;
  • গন্তব্যপথ – জিপ ফাইলের পথ নির্দিষ্ট করে;
  • কম্প্রেশন লেভেল - কম্প্রেশন লেভেল সেট করে (NoCompression , Optimal অথবা Fastest );
  • আপডেট করুন – আপনাকে একটি বিদ্যমান জিপ সংরক্ষণাগারে ফাইল যোগ (আপডেট) করতে দেয়;
  • জোর - যদি নির্দিষ্ট নামের একটি সংরক্ষণাগার ইতিমধ্যেই বিদ্যমান থাকে, তাহলে এটি ওভাররাইট করা হবে।
টিপ . কম্প্রেশন লেভেল অপশন:

  • অনুকূল — কম্প্রেশন স্তর দ্বারা অপ্টিমাইজেশান;
  • দ্রুততম — নেওয়া সময়ের দ্বারা অপ্টিমাইজেশান;
  • নো কম্প্রেশন — কোনো কম্প্রেশন ছাড়াই।

একটি জিপ ফাইলে ইতিমধ্যে সংকুচিত ফাইল (jpg, msi, mp3, ইত্যাদি) সংরক্ষণ করার সময় NoCompression বিকল্পটি ব্যবহার করা উচিত। এই ক্ষেত্রে, উইন্ডোজ তাদের কম্প্রেস করতে CPU সময় নষ্ট করবে না।

একটি একক ফাইল জিপ করতে, চালান:

Compress-Archive -Path "C:\Logs\WindowsUpdate.log" -DestinationPath C:\Archive\updatelog.zip -CompressionLevel Optimal

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

আপনি একাধিক ফোল্ডারের সম্পূর্ণ বিষয়বস্তু জিপ করতে পারেন (সমস্ত ফাইল এবং নেস্টেড ফোল্ডার সহ):

Compress-Archive -Path C:\Logs\,C:\Logs2\ -DestinationPath C:\Archive\logs-all.zip -CompressionLevel Optimal

সংরক্ষণাগারে একাধিক ফাইল বা ফোল্ডার যোগ করতে, তাদের নাম কমা দিয়ে আলাদা করুন।

আপনি একটি নির্দিষ্ট মাস্ক সহ শুধুমাত্র ফাইলগুলি ZIP সংরক্ষণাগারে যোগ করতে পারেন। উদাহরণস্বরূপ, নিম্নলিখিত কমান্ডটি শুধুমাত্র *.txt ফাইলগুলিকে জিপ করবে।

Compress-Archive -Path C:\Logs\*.txt -DestinationPath C:\Archive\logs-txt.zip –CompressionLevel Fastest

Get-ChildItem cmdlet-এর সাথে আরও জটিল ফিল্টার ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, নিম্নলিখিত স্ক্রিপ্টটি আপনাকে ডিস্কে *.docx বা *.xlsx এক্সটেনশন সহ শীর্ষ 10টি বৃহত্তম ফাইল খুঁজে পেতে এবং সেগুলিকে সংরক্ষণাগারে যুক্ত করার অনুমতি দেবে:

Get-ChildItem c:\share\ITdept -Include *.xlsx –Recurse| sort -descending -property length | select -first 10 |Compress-Archive -DestinationPath C:\backup\itdeptdocs.zip

একটি বিদ্যমান জিপ সংরক্ষণাগারে নতুন ফাইল যোগ করতে, আপডেট ব্যবহার করুন৷ কী:

Compress-Archive -Path C:\Logs\,C:\logs2\ –Update -DestinationPath C:\Archive\logs-txt.zip

ইঙ্গিত .যেহেতু Microsoft.PowerShell.Archive মডিউল System.IO.Compression.ZipArchive ক্লাস ব্যবহার করে, আপনি 2 GB-এর থেকে বড় ফাইল সংকুচিত করতে পারবেন না (কারণ অন্তর্নিহিত API-এর একটি সীমাবদ্ধতা রয়েছে)। একটি বড় ফাইল সংকুচিত করার চেষ্টা করার সময়, একটি ত্রুটি প্রদর্শিত হবে:

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

Exception calling "Write" with "3" argument(s): "Stream was too long."
At  C:\Windows\system32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive\Microsoft.PowerShell.Archive.psm1:805
char:29
+ ...                     $destStream.Write($buffer, 0, $numberOfBytesRead)
+                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : IOException

এক্সপ্যান্ড-আর্কাইভ দিয়ে কিভাবে একটি জিপ ফাইল বের করবেন?

জিপ ফাইল আনজিপ করতে আপনি এক্সপ্যান্ড-আর্কাইভ cmdlet ব্যবহার করতে পারেন। cmdlet-এর সিনট্যাক্স একই রকম:

Expand-Archive [-Path] String [-DestinationPath] String [-Force]  [-Confirm]

উদাহরণ স্বরূপ, আমরা পূর্বে তৈরি করা জিপ সংরক্ষণাগারটিকে নির্দিষ্ট ফোল্ডারে আনপ্যাক করতে এবং ফাইলগুলি ওভাররাইট করি:

Expand-Archive -Path C:\archive\logs-all.zip  -DestinationPath c:\logs -Force

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

Microsoft.PowerShell.Archive মডিউলের অসুবিধা:

  • আপনি আর্কাইভের বিষয়বস্তু এক্সট্র্যাক্ট না করে দেখতে পারবেন না;
  • আপনি সংরক্ষণাগার থেকে কিছু ফাইল বের করতে পারবেন না (আপনাকে সম্পূর্ণ সংরক্ষণাগার ফাইলটি বের করতে হবে);
  • আপনি জিপ ছাড়া অন্য আর্কাইভ ফরম্যাট ব্যবহার করতে পারবেন না;
  • আপনি একটি পাসওয়ার্ড দিয়ে একটি ZIP সংরক্ষণাগার রক্ষা করতে সক্ষম হবেন না৷
আরও জটিল ক্ষেত্রে, আপনার PowerShell স্ক্রিপ্টগুলিতে সংরক্ষণাগার সম্পাদন করতে আপনাকে তৃতীয় পক্ষের সরঞ্জামগুলি ব্যবহার করতে হবে। উদাহরণস্বরূপ, 7zip অথবা 7Zip4Powershell মডিউল।

আপনি 7Zip4Powershell মডিউল ইনস্টল করতে পারেন এবং নিম্নরূপ একটি পাসওয়ার্ড সুরক্ষিত জিপ ফাইল বের করতে পারেন:

Install-Module -Name 7Zip4Powershell
Expand-7Zip -ArchiveFileName C:\Archive\Logs.zip -Password "p@ssd0rw" -TargetPath C:\Share\Logs

PowerShell ZipFile ক্লাসের সাথে সংকুচিত ফাইলগুলির সাথে কাজ করা

পূর্ববর্তী Windows সংস্করণে (Windows 10 বা Windows Server 2016 এর আগে PowerShell সংস্করণ <5.0 (যদি আপনি PowerShell সংস্করণ আপগ্রেড করতে না পারেন), আপনি জিপ সংরক্ষণাগার তৈরি করতে একটি পৃথক ZipFile ক্লাস (NET Framework 4.5 থেকে) ব্যবহার করতে পারেন।

প্রথমে, আপনার পাওয়ারশেল সেশনে ক্লাসটি লোড করুন:

Add-Type -AssemblyName "System.IO.Compression.FileSystem"

একটি ফোল্ডার সংরক্ষণাগার করতে, এই মত একটি PS স্ক্রিপ্ট ব্যবহার করুন:

$SourceFolder = 'C:\Logs'
$ZipFileName = 'C:\PS\logs.zip'
[IO.Compression.ZipFile]::CreateFromDirectory($SourceFolder, $ZipFileName)

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

জিপ সংরক্ষণাগার আপডেট করতে এবং কম্প্রেশন অনুপাত সেট করতে, নিম্নলিখিত পাওয়ারশেল কোডটি ব্যবহার করুন:

$addfile = ‘C:\temp\new.log’
$compressionLevel = [System.IO.Compression.CompressionLevel]::Fastest
$zip = [System.IO.Compression.ZipFile]::Open($zipFileName, 'update')[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($zip, $addfile, (Split-Path $addfile -Leaf), $compressionLevel)
$zip.Dispose()

$zip.Dispose() জিপ ফাইল বন্ধ করতে কমান্ড ব্যবহার করা হয়।

আপনি ZIP সংরক্ষণাগারের বিষয়বস্তু তালিকাভুক্ত করতে পারেন:

[System.IO.Compression.ZipFile]::OpenRead($zipFileName).Entries.Name

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

অথবা আপনি জিপ আর্কাইভের বিষয়বস্তুগুলিকে অতিরিক্ত তথ্য সহ আউট-গ্রিডভিউ টেবিল হিসাবে প্রদর্শন করতে পারেন (সংকুচিত/অসংকুচিত ফাইলের আকার, শেষ লেখার সময় ইত্যাদি):

$ZipFileName = "C:\PS\logs1.zip"
$Stream = New-Object IO.FileStream($ZipFileName , [IO.FileMode]::Open)
$ZipArchive = New-Object IO.Compression.ZipArchive($Stream)
$ZipArchive.Entries |
Select-Object Name,
@{Name="File Path";Expression={$_.FullName}},
@{Name="Compressed Size (KB)";Expression={"{0:N2}" -f($_.CompressedLength/1kb)}},
@{Name="UnCompressed Size (KB)";Expression={"{0:N2}" -f($_.Length/1kb)}},
@{Name="File Date";Expression={$_.LastWriteTime}} | Out-GridView
$ZipArchive.Dispose()
$Stream.Close()
$Stream.Dispose()

কিভাবে PowerShell দিয়ে জিপ আর্কাইভ এবং আনজিপ ফাইল তৈরি করবেন?

C:\Logs ফোল্ডারে ZIP ফাইলটি বের করতে, নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন:

$SourceZipFile = 'C:\PS\logs.zip'
$TargetFolder = 'C:\Logs'
[IO.Compression.ZipFile]::ExtractToDirectory($SourceZipFile, $TargetFolder)


  1. কিভাবে উইন্ডোজ 10 এ বিনামূল্যে ফাইল জিপ এবং আনজিপ করবেন

  2. কিভাবে আইফোনে জিপ ফাইল তৈরি এবং খুলবেন?

  3. কিভাবে ম্যাকে ফাইল আনজিপ এবং এক্সট্রাক্ট করবেন

  4. Windows 10 এ পাওয়ারশেল ব্যবহার করে ফাইলগুলিকে কীভাবে জিপ/আনজিপ করবেন