在 Server 2012 Core 中使用 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())

这对我来说行不通,因为 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

相关内容