เปิดเครื่องรูดไฟล์ด้วย Powershell ใน Server 2012 Core


15

ฉันต้องการแตกไฟล์ด้วย powershell วิธีทั่วไปที่ฉันเห็นทุกคนทำคือการทำให้เชลล์กับสคริปต์โดยอัตโนมัติ

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

สิ่งนี้จะไม่ทำงานสำหรับฉันเนื่องจาก Server Core ไม่มีเชลล์ดังนั้นจึงไม่มีระบบอัตโนมัติ สิ่งนี้ทำให้เกิดข้อผิดพลาด E_FAIL COM

Powershell ดูเหมือนจะไม่สามารถทำด้วยตัวเองและถ้าฉันไปบุคคลที่สามฉันต้องคิดหาวิธีในการรับสคริปต์ยูทิลิตี้ไปยังเซิร์ฟเวอร์ในสถานที่แรก 7-Zip คือ go-to ของฉัน แต่ดูเหมือนว่าฉันจะไม่สามารถสคริปต์การดาวน์โหลดและติดตั้งได้ Sourceforge ทำให้ฉันถอยกลับไฟล์ HTML

ฉันจะสคริปต์การคลายซิปไฟล์ zip ใน Server 2012 Core ได้อย่างไร


มีความต้องการอะไรในการดาวน์โหลด 7zip จาก SF? คุณไม่สามารถติดตั้ง / คัดลอกจากแหล่งภายในหรือไม่
longneck

@ longneck สคริปต์ PS ที่ฉันผลิตจะถูกส่งมอบให้กับลูกค้า ดังนั้นสคริปต์จะต้องมีตัวเองทั้งหมด ฉันสามารถโฮสต์ยูทิลิตี้ zip ด้วยตัวเองได้ แต่นั่นเป็นอาการปวดหัวอีกอย่างที่ฉันไม่ต้องการ (ถูกกฎหมาย) ฉันแค่หวังว่าจะมี Cmdlet ง่าย ๆ ที่สามารถทำสิ่งนี้ได้ในช่วงปี 2012
vcsjones

หากคุณกำลังมอบบางอย่างให้กับลูกค้าทำไมไม่สร้างคลังข้อมูลแบบขยายตัวเอง
Zoredache

@Zoredache ดีดูเหมือนว่าจะเริ่มทำงานมากขึ้นในตอนแรก (ระบบสร้างของเรากำลังสร้าง ZIP อยู่แล้ว) ฉันหวังว่ามันจะเป็น "real quick"
vcsjones

คำตอบ:


24

Server 2012 มาพร้อมกับ Dot.NET 4.5 ซึ่งมีSystem.IO.Compression.ZipFileซึ่งมีเมธอด ExtractToDirectory คุณควรใช้สิ่งนี้จาก PowerShell

นี่คือตัวอย่าง

ก่อนอื่นคุณต้องโหลดชุดประกอบ ZipFile ใน:

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

จากนั้นแยกเนื้อหาออก

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

แก้ไข: หากคุณอัปเดตเป็น PowerShell 5 (Windows Management Framework 5.0) ในที่สุดคุณก็มี cmdlets ดั้งเดิม:

Expand-Archive $pathToZip $targetDir

ฉันเพิ่งดูผ่าน System.IO.Compression และ ZipFile ไม่ได้อยู่ที่นั่น มีการอัพเดท 4.5 ที่เพิ่มเข้ามาหรือไม่?
Mike

ดูเหมือนว่าสิ่งนี้ได้รับการแนะนำใน 4.5 แต่ไม่มีใน 4.0 หากคุณมี 4.5 คุณควรมีมัน
Peter Hahndorf

6
มันเกี่ยวกับเวลาแช่งที่มีวิธีแก้ปัญหาพื้นเมืองสำหรับเรื่องนี้
MDMarra

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.