[server] Powershell에서 파일을 압축 / 압축 해제하는 방법은 무엇입니까?

PowerShell에서 파일을 압축 / 압축 해제 (* .zip)하는 단일 라이너가 있습니까?



답변

DotNetZip 을 사용하면 PowerShell에서이 작업을 수행 할 수 있습니다. 한 줄짜리가 아니지만 라이브러리에서 필요한 PowerShell 스크립트를 작성할 수 있습니다.

COM 인터페이스를 사용할 수도 있습니다 ( Windows PowerShell로 파일 압축을 참조한 다음 Windows Vista 사이드 바 가제트 패키지 참조) .

인터넷 검색 “zip powershell”또는 “unzip powershell”도 유용한 결과를 얻을 수 있습니다.


답변

이것은 외부 도구없이 Powershell에서 순수하게 수행 할 수있는 방법입니다. test.zip이라는 파일을 현재 작업 디렉토리에 압축 해제합니다 :

$shell_app=new-object -com shell.application
$filename = "test.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path)
$destination.Copyhere($zip_file.items())


답변

이제 .NET Framework 4.5에는 다음 과 같이 사용할 수 있는 ZipFile 클래스가 있습니다.

[System.Reflection.Assembly]::LoadWithPartialName('System.IO.Compression.FileSystem')
[System.IO.Compression.ZipFile]::ExtractToDirectory($sourceFile, $targetFolder)


답변

당신은 체크 아웃하실 수 있습니다 PowerShell을 커뮤니티 확장 (PSCX) 이 특별히 cmdlet을 가지고있다.


답변

나는 이것이 매우 오래된 질문이라는 것을 알고 있지만 트위터에 링크 된 것을 보았습니다. 현재 답변을 게시 할 것이라고 생각했습니다.

현재 Windows 10 또는 Windows Management Framework 5 Production Preview 를 통해 제공되는 PowerShell 5에는 ‘zipping’및 ‘unzipping’을위한 두 가지 기본 제공 cmdlet이 제공됩니다.


답변

몇 년 동안 사용하고 UNIX 환경에서 사용하는 infozip 바이너리를 사용하는 가장 간단한 솔루션을 찾습니다.

PS> zip -9r ../test.zip *
PS> cd ..
PS> unzip -t test.zip Archive:  test.zip
    testing: LinqRepository/          OK
    testing: LinqRepository/ApplicationService.cs   OK
    testing: LinqRepository/bin/      OK
...
No errors detected in compressed data of test.zip.

텍스트 출력 주위에 powershell 래퍼를 배치하는 것이 쉽지만 실제로는 필요하지 않으므로 방해하지 않았습니다.

http://www.info-zip.org/


답변

또한 Info-ZIP (대부분의 다른 Zip 유틸리티에있는 Zip 엔진)와 7-Zip도 좋아합니다. GUI와 명령 줄 Zip 유틸리티가 모두 있습니다. 요점은 대부분의 PowerShell 작업에 사용할 수있는 훌륭한 명령 줄 유틸리티가 있다는 것입니다.

PowerShell을 염두에두고 빌드되지 않은 명령 줄 유틸리티를 실행하는 데 필요한 몇 가지 트릭이 있습니다.

  • 이름에 숫자로 시작하는 실행 파일을 실행하려면 앰퍼샌드 (&)로 시작하십시오.

    & 7zip.exe

  • 유틸리티는 명령 행에서 따옴표로 표시 할 것으로 예상되는 각 토큰을 랩핑하십시오.

    & “c : \ path with space \ SomeCommand.exe” “/ parameter2” “/ parameter2” “parameter2의 값” “Value2`”(따옴표 포함) “

이 시도:

zip filename.zip (Get-ChildItem somepath\*)

또는:

zip filename.zip (Get-Content ListOfFiles.txt)