Powershell

在 Server 2012 Core 中使用 Powershell 解壓縮文件

  • February 25, 2015

我需要用 powershell 解壓一個文件。我見過每個人這樣做的典型方法是使用腳本自動化 shell。

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

這對我不起作用,因為伺服器核心沒有外殼,所以沒有一個可以自動化的。這會產生 E_FAIL COM 錯誤。

Powershell 似乎無法自行完成,如果我參加第 3 方,我必須首先想辦法編寫腳本,將實用程序放到伺服器上。7-Zip 是我的首選,但我似乎無法編寫腳本下載和安裝它。Sourceforge 不斷向我吐出 HTML 文件。

如何在 Server 2012 Core 中完全編寫解壓縮 zip 文件的腳本?

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),您最終擁有本機 cmdlet:

Expand-Archive $pathToZip $targetDir

引用自:https://serverfault.com/questions/446884