Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Windows Server

PowerShell से ZIP आर्काइव कैसे बनाएं और फाइलें अनजिप करें?

PowerShell आर्काइव मॉड्यूल का परिचय

आप ZIP आर्काइव बनाने और उन्हें निकालने के लिए PowerShell की सुविधाओं का उपयोग कर सकते हैं। PowerShell 5.0 (यह PowerShell संस्करण डिफ़ॉल्ट रूप से Windows 10 पर इंस्टॉल है) में, एक अलग मॉड्यूल Microsoft.PowerShell.Archive उपलब्ध है। Windows के पुराने संस्करणों पर, आप आर्काइविंग के लिए .NET Framework से ZipFile क्लास का उपयोग कर सकते हैं।

Microsoft.PowerShell.Archive मॉड्यूल (C:\Windows\System32\WindowsPowerShell\v1.0\Modules\Microsoft.PowerShell.Archive) में केवल दो cmdlets हैं:

  • Compress-Archive
  • Expand-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: Compress-Archive के साथ ZIP आर्काइव बनाना

Compress-Archive कमांड का निम्न सिंटैक्स है:

Compress-Archive [-Path] String[] [-DestinationPath] String [-CompressionLevel String ] [-Update]
  • Path पैरामीटर का उपयोग आर्काइव की जाने वाली फाइलों या फोल्डर्स का पथ निर्दिष्ट करने के लिए किया जाता है
  • DestinationPath - ZIP फाइल का पथ निर्दिष्ट करता है
  • CompressionLevel - संपीड़न स्तर सेट करता है (NoCompression, Optimal या Fastest)
  • Update - मौजूदा ZIP आर्काइव में फाइलों को जोड़ने (अपडेट) की अनुमति देता है
  • Force - यदि निर्दिष्ट नाम वाला आर्काइव पहले से मौजूद है, तो इसे ओवरराइट कर दिया जाएगा

टिप: संपीड़न स्तर विकल्प:

  • Optimal - संपीड़न स्तर द्वारा अनुकूलन
  • Fastest - लिए गए समय द्वारा अनुकूलन
  • NoCompression - बिना किसी संपीड़न के

NoCompression विकल्प का उपयोग पहले से संपीड़ित फाइलों (jpg, msi, mp3, आदि) को एक ही ZIP फाइल में आर्काइव करते समय किया जाना चाहिए। इस मामले में, Windows उन्हें संपीड़ित करने में CPU समय बर्बाद नहीं करेगा।

एक फाइल को ज़िप करने के लिए, चलाएं:

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

आप कई फोल्डर्स की पूरी सामग्री को ज़िप कर सकते हैं (सभी फाइलों और नेस्टेड फोल्डर्स सहित):

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

मौजूदा zip आर्काइव में नई फाइलें जोड़ने के लिए, Update कुंजी का उपयोग करें:

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

संकेत: क्योंकि Microsoft.PowerShell.Archive मॉड्यूल System.IO.Compression.ZipArchive क्लास का उपयोग करता है, आप 2 GB से बड़ी फाइल को संपीड़ित नहीं कर सकते (क्योंकि अंतर्निहित API की सीमा है)। बड़ी फाइल को संपीड़ित करने का प्रयास करते समय एक त्रुटि दिखाई देगी:

Exception calling "Write" with "3" argument(s): "Stream was too long."

Expand-Archive के साथ ZIP फाइल कैसे निकालें?

आप ZIP फाइलों को अनजिप करने के लिए Expand-Archive cmdlet का उपयोग कर सकते हैं। cmdlet के लिए सिंटैक्स समान है:

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

उदाहरण के लिए, हमारे द्वारा पहले बनाए गए ZIP आर्काइव को निर्दिष्ट फोल्डर में अनपैक करने और फाइलों को ओवरराइट करने के लिए:

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

Microsoft.PowerShell.Archive मॉड्यूल के नुकसान:

  • आप इसे निकाले बिना आर्काइव की सामग्री नहीं देख सकते
  • आप आर्काइव से कुछ फाइलें नहीं निकाल सकते (आपको पूरी आर्काइव फाइल निकालनी होगी)
  • आप zip को छोड़कर अन्य आर्काइव फॉर्मेट का उपयोग नहीं कर सकते
  • आप पासवर्ड के साथ ZIP आर्काइव की रक्षा नहीं कर पाएंगे

अधिक जटिल मामलों में, आपको अपने PowerShell स्क्रिप्ट में आर्काइविंग करने के लिए थर्ड-पार्टी टूल्स का उपयोग करने की आवश्यकता है। उदाहरण के लिए, 7zip या 7Zip4Powershell मॉड्यूल।

आप 7Zip4Powershell मॉड्यूल इंस्टॉल कर सकते हैं और पासवर्ड से सुरक्षित zip फाइल को इस तरह निकाल सकते हैं:

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 संस्करण को अपग्रेड नहीं कर सकते)), आप zip आर्काइव बनाने के लिए अलग ZipFile क्लास (NET Framework 4.5 से) का उपयोग कर सकते हैं।

पहले, क्लास को अपने PowerShell सत्र में लोड करें:

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

फोल्डर को आर्काइव करने के लिए, इस तरह PS स्क्रिप्ट का उपयोग करें:

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

ZIP आर्काइव को अपडेट करने और संपीड़न अनुपात सेट करने के लिए, निम्न 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 फाइल को बंद करने के लिए किया जाता है।

आप ZIP आर्काइव की सामग्री सूचीबद्ध कर सकते हैं:

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

या आप ZIP आर्काइव की सामग्री को अतिरिक्त जानकारी (संपीड़ित/असंपीड़ित फाइलों का आकार, अंतिम लेखन समय, आदि) के साथ Out-GridView टेबल के रूप में प्रदर्शित कर सकते हैं:

$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()

ZIP फाइल को C:\Logs फोल्डर में निकालने के लिए, निम्न कमांड का उपयोग करें:

$SourceZipFile = 'C:\PS\logs.zip'
$TargetFolder = 'C:\Logs'
[IO.Compression.ZipFile]::ExtractToDirectory($SourceZipFile, $TargetFolder)
  1. iPhone पर ज़िप फ़ाइलें बनाएं और खोलें: चरण-दर-चरण गाइड iPhone पर ज़िप फ़ाइलें बनाएं और खोलें: चरण-दर-चरण गाइड

    कंप्यूटर पर काम करते हुए आपने ज़िप या कंप्रेस्ड शब्द कई बार सुना होगा। ज़िप फ़ाइलें व्यक्तियों और व्यवसायों दोनों के लिए बेहद उपयोगी हैं, क्योंकि इनसे बड़ी फ़ाइलों को कंप्रेस करके ईमेल के ज़रिए भेजा जा सकता है। ज़िप फ़ाइलें सभी डेटा को एक ही फ़ोल्डर में समेट देती हैं, जिससे ईमेल अटैचमेंट को जल्दी डा

  1. Mac पर फ़ाइलों को अनज़िप और एक्सट्रैक्ट करने में महारत हासिल करें - आसान चरण-दर-चरण ट्यूटोरियल Mac पर फ़ाइलों को अनज़िप और एक्सट्रैक्ट करने में महारत हासिल करें - आसान चरण-दर-चरण ट्यूटोरियल

    ZIP एक लोकप्रिय आर्काइव फ़ाइल फॉर्मेट है जो उपयोगकर्ताओं को उन्नत संपीड़न तकनीकों का उपयोग करके एक ही फ़ोल्डर में कई फ़ाइलों को आसानी से भेजने या साझा करने की अनुमति देता है। इसलिए, ईमेल भेजते समय या डेटा साझा करते समय अटैचमेंट का एक गुच्छा संलग्न करने के बजाय, आप बस एक ZIP फ़ाइल का उपयोग करके काम प

  1. विंडोज 10 में पावरशेल का उपयोग करके फ़ाइलों को कंप्रेस और एक्सट्रैक्ट करें – चरण-दर-चरण गाइड विंडोज 10 में पावरशेल का उपयोग करके फ़ाइलों को कंप्रेस और एक्सट्रैक्ट करें – चरण-दर-चरण गाइड

    ज़िप फ़ंक्शन आपको एक फ़ाइल को उसकी सभी संबद्ध कॉन्फ़िगरेशन के साथ एक ही फ़ाइल में कंप्रेस करके छोटे आकार में बदलने की अनुमति देता है। इस तरह, ऐसी कंप्रेस्ड ज़िप फ़ाइलों को ईमेल या अन्य फ़ाइल-साझाकरण माध्यमों पर दूसरों के साथ आसानी से साझा किया जा सकता है। ज़िप फ़ंक्शन करने के लिए, उपयोगकर्ता आमतौर