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