我需要使用 powershell 解压文件。我见过大家这样做的典型方式是使用脚本自动执行 shell。
$shellApplication = new-object -com shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
这对我来说行不通,因为 Server Core 没有 shell,所以没有一个可以自动化的 shell。这会导致 E_FAIL COM 错误。
Powershell 似乎无法独自完成此操作,如果我使用第三方,我必须首先想出一种方法来编写脚本,以便将实用程序安装到服务器上。7-Zip 是我的首选,但我似乎无法编写脚本来下载和安装它。Sourceforge 不断向我吐出 HTML 文件。
如何在 Server 2012 Core 中完整编写解压 zip 文件的脚本?
答案1
Server 2012 附带 Dot.NET 4.5,它具有压缩.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