Server 2012 Core에서 Powershell을 사용하여 파일 압축 해제 자체적으로 할 수없는 것처럼 보이며 제

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은 자체적으로 할 수없는 것처럼 보이며 제 3 자에게 가면 유틸리티를 서버에 가져 오는 스크립트를 먼저 작성하는 방법을 찾아야합니다. 7-Zip은 내가 사용했지만 다운로드 및 설치 스크립트를 작성할 수있는 것 같지 않습니다. Sourceforge는 HTML 파일을 계속 뱉어냅니다.

Server 2012 Core에서 zip 파일 압축 해제를 완전히 스크립팅하려면 어떻게해야합니까?



답변

Server 2012에는 ExtractToDirectory 메서드가있는 System.IO.Compression.ZipFile 이있는 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)로 업데이트 한 경우 마침내 기본 cmdlet이 있습니다.

Expand-Archive $pathToZip $targetDir


답변