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

我需要使用PowerShell解压缩文件。 我见过大家都这样做的典型方式是通过脚本自动化shell。

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

这不适用于我,因为服务器核心没有一个shell,所以没有一个自动化。 这给了一个E_FAIL COM错误。

Powershell似乎不能自己做,如果我去第三方,我必须找出一个脚本获取该实用程序到服务器上的方法。 7-Zip是我的目标,但似乎没有脚本下载和安装它。 Sourceforge不断把我吐回HTML文件。

如何在Server 2012 Core中完整脚本解压缩zip文件?

Server 2012自带有Dot.NET 4.5,它有一个具有ExtractToDirectory方法的System.IO.Compression.ZipFile 。 您应该能够从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