PowerShellでファイルを解凍する必要があります。私が皆がこれを行うのを見た典型的な方法は、スクリプトでシェルを自動化することです。
$shellApplication = new-object -com Shell.application
$zipPackage = $shellApplication.NameSpace($zipfilename)
$destinationFolder = $shellApplication.NameSpace($destination)
$destinationFolder.CopyHere($zipPackage.Items())
Server Coreにはシェルがなく、自動化するシェルがないため、これは私にとってはうまくいきません。これにより、E_FAIL COMエラーが発生します。
Powershellはそれ自体でそれを行うことができないようで、サードパーティに行く場合、最初にユーティリティをサーバーに取得するスクリプトを作成する方法を考えなければなりません。 7-Zipは私の主役でしたが、ダウンロードしてインストールするスクリプトを作成できるようには思えません。 SourceforgeはHTMLファイルを吐き出し続けます。
Server 2012 CoreでZipファイルを完全にスクリプトで解凍するにはどうすればよいですか?
Server 2012には、 System.IO.Compression.ZipFile があり、ExtractToDirectoryメソッドがあるDot.NET 4.5が付属しています。これは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)に更新した場合、ついにネイティブコマンドレットができます。
Expand-Archive $pathToZip $targetDir