সার্ভারে 2012 পাওয়ারের পাওয়ারের সাথে ফাইলটি আনজিপ করুন


15

পাওয়ারশেল দিয়ে আমার একটি ফাইল আনজিপ করা দরকার। স্ক্রিপ্টের সাহায্যে শেলটি স্বয়ংক্রিয় করে হ'ল প্রত্যেককে এটি করার সাধারণ উপায়।

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

এটি আমার পক্ষে কাজ করবে না, যেহেতু সার্ভার কোরের শেল নেই, সুতরাং স্বয়ংক্রিয় করার কোনও নেই। এটি একটি E_FAIL COM ত্রুটি দেয়।

পাওয়ারশেল নিজে থেকে এটি করতে সক্ষম হবে বলে মনে হচ্ছে না, এবং আমি যদি তৃতীয় পক্ষ থেকে যাই, তবে প্রথমে সার্ভারে ইউটিলিটি পাওয়ার জন্য আমাকে স্ক্রিপ্টের একটি উপায় বের করতে হবে। 7-জিপটি আমার যেতে ছিল, তবে মনে হয় না যে আমি এটি ডাউনলোড এবং ইনস্টল করে স্ক্রিপ্ট করতে পারি। সোর্সফো্জ আমাকে এইচটিএমএল ফাইলগুলি ফিরিয়ে দিতে থাকে।

আমি কীভাবে সার্ভার ২০১২ কোরে জিপ ফাইলটি আনজিপিংয়ে পুরোপুরি স্ক্রিপ্ট করতে পারি?


এসএফ থেকে 7 জিপ ডাউনলোড করার প্রয়োজনীয়তাটি কী? আপনি কি কোনও অভ্যন্তরীণ উত্স থেকে ইনস্টল / অনুলিপি করতে পারবেন না?
দীর্ঘায়ু

@ লম্বনেক আমি যে পিএস স্ক্রিপ্টটি তৈরি করছি তা গ্রাহকদের হাতে দেওয়া হবে; সুতরাং স্ক্রিপ্টটি সম্পূর্ণ স্বনির্ভর থাকতে হবে। আমি নিজে একটি জিপ ইউটিলিটি হোস্ট করতে পারি, তবে এটি অন্য মাথাব্যথা যা আমি চাই না (লেগালিজ)। আমি কেবল আশা করছিলাম যে একটি সাধারণ সিএমডলেট রয়েছে যা এটি করতে পারে যা ২০১২-এ ইন্ট্রো-এড পেয়েছে।
vcsjones

আপনি যদি গ্রাহকদের কাছে কিছু হস্তান্তর করছেন তবে কেন একটি স্ব-উত্তোলন সংরক্ষণাগার তৈরি করবেন না?
জোড়াদেচি

@ জোরেদাছে ভাল, প্রথম দিকে আরও কাজ করার মতো মনে হয়েছিল (আমাদের বিল্ড সিস্টেমটি ইতিমধ্যে জিপ তৈরি করছে), আমি আশা করছিলাম এটি কেবল "বাস্তব দ্রুত" হবে be
vcsjones

উত্তর:


24

সার্ভার 2012 Dot.NET 4.5 যা রয়েছে তার সাথে আসে System.IO.Compression.ZipFile যা ExtractToDirectory পন্থা নেই। আপনি পাওয়ারশেল থেকে এটি ব্যবহার করতে সক্ষম হওয়া উচিত।

এখানে একটি উদাহরণ।

প্রথমে আপনাকে জিপফাইলে সমাবেশটি লোড করতে হবে:

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

তারপরে সামগ্রীগুলি বের করুন

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

সম্পাদনা করুন: আপনি যদি পাওয়ারশেল 5 (উইন্ডোজ ম্যানেজমেন্ট ফ্রেমওয়ার্ক 5.0) এ আপডেট হয়ে থাকেন তবে শেষ পর্যন্ত আপনার নেটিভ সেমিডলেট রয়েছে:

Expand-Archive $pathToZip $targetDir

আমি কেবল System.IO.Compression দেখেছি এবং ZipFile সেখানে নেই ile এখানে 4.5 যোগ করার কোনও আপডেট রয়েছে?
মাইক

দেখে মনে হচ্ছে এটি 4.5 সালে চালু হয়েছিল, তবে 4.0 এ উপস্থিত ছিল না। আপনার 4.5 থাকলে আপনার এটি থাকা উচিত।
পিটার হানডরফ

6
এটি জঘন্য সময় সম্পর্কে যে এর জন্য একটি স্থানীয় সমাধান আছে।
MDMarra

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.