在Server 2012 Core中使用Powershell解压缩文件

Modified on: Sat, 24 Aug 2019 19:00:02 +0800

我需要用PowerShell解压缩文件。我看到每个人都这样做的典型方法是使用脚本自动化shell。

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

这对我来说不起作用,因为Server Core没有shell,所以没有一个可以自动化。这会产生E_FAIL COM错误。

Powershell似乎无法独立完成,如果我去第三方,我必须找到一种方法来首先将实用程序放到服务器上。 7-Zip是我的首选,但似乎我不能下载和安装它的脚本。 Sourceforge不断向我发送HTML文件。

如何在Server 2012 Core中完全解压缩zip文件?

作者:vcsjones

最佳答案

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

相关问答

添加新评论