Powershell
在 Server 2012 Core 中使用 Powershell 解壓縮文件
我需要用 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