我想使用PowerShell提取zip文件。所以,我用这个:
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 -AssemblyName System.IO.Compression.FileSystem
到
Add-Type -Path "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.IO.Compression.FileSystem.dll"
它说:
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。它就在那里。请问我的语法有什么问题?
答案 0 :(得分:1)
你的语法没有错;问题是程序集与您的PowerShell版本不兼容 - 这正是第二个错误所说的。对于第一个错误,PowerShell可能根本没有将该路径作为其搜索程序集DLL的路径的一部分,因为它们不兼容(再次,请参阅第二次尝试的错误,您指定了程序集的正确路径)
如果可以,您可能需要考虑updating your PowerShell (and Windows Management Framework)。 PowerShell的当前版本是5。
答案 1 :(得分:1)
如果您使用的是Powershell版本5+,则可以使用Expand-Archive
解压缩文件。请参阅此msdn链接。
答案 2 :(得分:0)
我有一个类似的问题,使用Compress-Archive可以在Win10上工作但在Win Srv 2012 R2上没有,甚至认为语法是正确的,并且每个路径上面都存在dll。我注意到Win10上的PowerShell版本是5,而WinSrv上的版本是4所以我安装了Windows Management Framework(WMF)5.1,其中包含并更新到PS,然后当WinSrvR2上的PS版本也是5时,此命令工作