2017-02-08 8 views
0

PowerShell을 사용하여 zip 파일을 추출하려고합니다. 그래서, 이것을 사용합니다 :Add-Type을 사용하여 System.IO.Compression.FileSystem을로드하면 오류가 발생합니다.

Add-Type -AssemblyName System.IO.Compression.FileSystem 

# some code to download the zip file from FTP # 

[System.IO.Compression.ZipFile]::ExtractToDirectory($localpath+"\Test.zip",$localpath) 

오류가 발생합니다 : Add-Type : 유형을 추가 할 수 없습니다. 'System.IO.Compression.FileSystem'어셈블리를 찾을 수 없습니다.

난 다음에 StackOverflow를 검색하고 말한다

Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.FileSystem.dll" 

Add-Type -AssemblyName System.IO.Compression.FileSystem 

을 변경 :

Error: Could not load file or assembly 'file:///C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFram 
ework\v4.6.1\System.IO.Compression.FileSystem.dll' or one of its dependencies. This assembly is built by a runtime newer 
than the currently loaded runtime and cannot be loaded. 

내가 실제로 v4.6.1 경로에서이 DLL을 볼 수 있습니다. 저기있어. 문법에 문제가 있습니까?

답변

1

구문에는 아무런 문제가 없습니다. 문제는 어셈블리가 PowerShell 버전과 호환되지 않는다는 것입니다. 바로 두 번째 오류가 말하는 것입니다. 첫 번째 오류의 경우 PowerShell은 호환되지 않기 때문에 어셈블리 DLL을 검색하는 경로의 일부로 해당 경로가 없을 수 있습니다 (어셈블리의 올바른 경로를 지정한 두 번째 시도의 오류 참조) .

가능한 경우 updating your PowerShell (and Windows Management Framework)을 고려해 볼 수 있습니다. PowerShell의 현재 버전은 5입니다.

+0

보다 정확하게 Powershell V3은 .NET 4.0 만로드하며 .NET 4.5에는이 유형이 포함되어 있으므로 WMF4를 사용해야합니다. –

+0

PS3.0에서 .Net 4.5를 사용하도록 허용 할 수 없습니까? – sodawillow

+0

아니오; 그것은 .NET 4.0으로 컴파일되었고 나중에는 알 수 없습니다. 그래서 최신 PS 및 WMF로 업데이트 할 것을 제안했습니다. –

1

Powershell 버전 5 이상을 사용하는 경우 Expand-Archive을 사용하여 파일의 압축을 풀 수 있습니다. 이 msdn 링크를 참조하십시오.

0

Win10에서 작동하는 Compress-Archive를 사용하는 경우에도 비슷한 문제가 있지만 Win Srv 2012 R2에서는 구문이 정확하고 dll이 위의 경로마다 존재한다고 생각하지는 않습니다. WinSrv의 PowerShell 버전이 5이고 WinSrv가 4 였기 때문에 PS에 포함하고 업데이트 한 Windows Management Framework (WMF) 5.1을 설치 한 다음 WinSrvR2의 PS 버전도 5 였을 때이 명령이 작동한다는 것을 알았습니다 .