Server 2012 Core'da Powershell ile Dosyayı Açın


15

Powershell ile bir dosyayı açmam gerekiyor. Herkesin bunu yapmasının tipik yolu, kabuğu bir komut dosyasıyla otomatikleştirmektir.

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

Bu benim için işe yaramayacak, çünkü Server Core'da bir kabuk yok, bu yüzden otomatikleştirilecek biri yok. Bu bir E_FAIL COM hatası verir.

Powershell kendi başına yapamıyor gibi görünüyor ve 3. tarafa gidersem, ilk başta yardımcı programı sunucuya almak için komut dosyası yazmanın bir yolunu bulmalıyım. 7-Zip benim içindi, ama indirip yükleyebileceğim gibi görünmüyor. Sourceforge bana HTML dosyalarını geri tükürmeye devam ediyor.

Server 2012 Core'da bir zip dosyasını tamamen nasıl açarım?


SF'den 7zip'i indirme gereksinimi nedir? Wy dahili bir kaynaktan yükleyemiyor / kopyalayamıyor musunuz?
longneck

@ longneck Ürettiğim PS betiği müşterilere dağıtılacak; bu yüzden senaryo tamamen kendi içinde olmalıdır. Ben olabilir bir zip programı kendimizi ev sahipliği, ama ben istemiyorum başka baş ağrısı (Legalese) 'dir. Ben sadece 2012 yılında intro-ed var bunu yapabilir basit bir Cmdlet olmasını umuyordum.
vcsjones

Müşterilere bir şey dağıtıyorsanız neden kendiliğinden açılan bir arşiv oluşturmuyorsunuz?
Zoredache

@Zoredache Bu başlangıçta daha fazla iş gibi görünüyordu (bizim inşa sistemi zaten ZIP inşa ediyor), ben sadece "gerçek hızlı" olacağını umuyordum.
vcsjones

Yanıtlar:


24

Server 2012, ExtractToDirectory yöntemi olan System.IO.Compression.ZipFile olan Dot.NET 4.5 ile birlikte gelir . Bunu PowerShell'den kullanabilmeniz gerekir.

İşte bir örnek.

İlk olarak ZipFile in derlemesini yüklemeniz gerekir:

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

Sonra içeriği çıkarın

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

Düzenleme: PowerShell 5 (Windows Management Framework 5.0) sürümüne güncellediyseniz, yerel cmdlet'leriniz olur:

Expand-Archive $pathToZip $targetDir

Sadece System.IO.Compression'a baktım ve ZipFile orada değil. 4.5 ekleyen bir güncelleme var mı?
Mike

Bu, 4.5'te tanıtıldı, ancak 4.0'da mevcut değildi. 4.5'iniz varsa, sahip olmalısınız.
Peter Hahndorf

6
Bunun için yerel bir çözümün olması lanet zamanı.
MDMarra

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.