सर्वर 2012 कोर में पॉवर्सशेल के साथ अनज़िप फ़ाइल


15

मुझे एक फाइल को पावरशेल से खोलना होगा। मैंने जिस विशिष्ट तरीके से सभी को देखा है वह एक स्क्रिप्ट के साथ शेल को स्वचालित करके है।

$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())

यह मेरे लिए काम नहीं करने वाला है, क्योंकि सर्वर कोर में शेल नहीं है, इसलिए स्वचालित करने के लिए कोई नहीं है। यह E_FAIL COM त्रुटि देता है।

पॉवर्सशेल इसे अपने दम पर करने में सक्षम नहीं लगता है, और अगर मैं तीसरी पार्टी में जाता हूं, तो मुझे पहले से सर्वर पर उपयोगिता प्राप्त करने वाली स्क्रिप्ट का एक तरीका पता लगाना होगा। 7-जिप मेरा जाना था, लेकिन ऐसा नहीं लगता कि मैं इसे डाउनलोड और इंस्टॉल कर सकता हूं। Sourceforge मुझे HTML फ़ाइलों को वापस थूकता रहता है।

मैं सर्वर 2012 कोर में ज़िप फ़ाइल को पूरी तरह से अनज़िप कैसे कर सकता हूं?


एसएफ से 7zip डाउनलोड करने की आवश्यकता क्या है? आप आंतरिक स्रोत से स्थापित / कॉपी नहीं कर सकते हैं?
longneck

@ लॉन्गनेक मैं जो पीएस स्क्रिप्ट का निर्माण कर रहा हूं, वह ग्राहकों को सौंपी जाएगी। इसलिए स्क्रिप्ट को पूरी तरह से आत्म निहित होना चाहिए। मैं खुद एक ज़िप उपयोगिता की मेजबानी कर सकता था , लेकिन यह एक और सिरदर्द है जो मैं नहीं चाहता (कानूनी)। मैं बस उम्मीद कर रहा था कि एक साधारण सीएमडीलेट था जो ऐसा कर सकता है जिसे 2012 में इंट्रो-एड मिला।
vcsjones 21

यदि आप ग्राहकों को कुछ सौंप रहे हैं तो एक सेल्फ-एक्सट्रैक्टिंग आर्काइव क्यों नहीं बनाएं?
Zoredache

@Zoredache खैर, जो शुरू में अधिक काम की तरह लग रहा था (हमारी निर्माण प्रणाली पहले से ही ज़िप का निर्माण कर रही है), मैं उम्मीद कर रहा था कि यह "वास्तविक त्वरित" होगा।
vcsjones 14

जवाबों:


24

सर्वर 2012 Dot.NET 4.5 के साथ आता है जिसमें System.IO.Compression.ZipFile है जिसमें ExtractToDirectory विधि है। आपको PowerShell से इसका उपयोग करने में सक्षम होना चाहिए।

यहाँ एक उदाहरण है।

सबसे पहले आपको असेंबली को लोड करने की आवश्यकता है जिपफाइल इसमें है:

[System.Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem") | Out-Null

फिर सामग्री निकालें

[System.IO.Compression.ZipFile]::ExtractToDirectory($pathToZip, $targetDir)

संपादित करें: यदि आपने PowerShell 5 (Windows प्रबंधन फ्रेमवर्क 5.0) में अपडेट किया है, तो आपके पास अंत में देशी cmdlets है:

Expand-Archive $pathToZip $targetDir

मैं सिर्फ System.IO.Compression और ZipFile के माध्यम से देखा नहीं है। क्या 4.5 में कोई अपडेट है जो इसे जोड़ता है?
माइक

ऐसा लगता है कि यह 4.5 में पेश किया गया था, लेकिन 4.0 में मौजूद नहीं है। यदि आपके पास 4.5 है तो आपके पास होना चाहिए।
पीटर हैन्डॉर्फ

6
यह लानत समय के बारे में है कि इसके लिए एक देशी समाधान है।
एमडीमर्रा

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.