我有一个.tar.gz我需要提取的文件.我用GzipStream对象处理了gunzip位System.IO.Compression,但我找不到任何处理该命名空间中的tarball的东西.有没有办法.tar在Powershell中本地处理文件?请注意,我能够从Powershell脚本调用任何此类函数/方法/对象构造/系统二进制文件是非常重要的.它不需要实际写在powershell中.(如果重要的话我正在使用64位窗口10)
PS请不要说"使用7zip"; 那不是原生的
Bro*_*per 35
我相信tar自发布以来已在 Windows 10 中作为本机功能添加。
我可以从 Windows 10 中的命令提示符或 PowerShell 运行
tar -xvzf .\whatever.tar.gz
Run Code Online (Sandbox Code Playgroud)
请注意,在 PowerShell 中.\使用 自动完成后添加了tab,但我认为它应该可以在没有它的情况下工作。
这个函数和它的 Unix 实现之间可能有一些根本的区别(因为它毕竟是在 Windows 上),但它对我有用。
Don*_*ank 18
我很确定Windows 10默认情况下不支持提取tar文件.
如果您可以期望脚本可以访问活动的Internet连接,那么您可以使用内置的包管理器获得7Zip支持.此解决方案:
这里是:
function Expand-Tar($tarFile, $dest) {
if (-not (Get-Command Expand-7Zip -ErrorAction Ignore)) {
Install-Package -Scope CurrentUser -Force 7Zip4PowerShell > $null
}
Expand-7Zip $tarFile $dest
}
Run Code Online (Sandbox Code Playgroud)
要使用它:
Expand-Tar archive.tar dest
Run Code Online (Sandbox Code Playgroud)
它完成了这项工作,但它对客户端系统进行了持久的更改.有一个更好但更复杂的解决方案:
更好的解决方案是将7Zip4PowerShell与您的脚本捆绑在一起.此解决方案:
它是根据LGPL-2.1许可证分发的,因此可以将软件包与您的产品捆绑在一起.您应该在文档中添加一个注释,它使用该包并提供链接,因为您需要提供对GNU许可产品的源代码的访问权限.
Save-Module -Name 7Zip4Powershell -Path .
Run Code Online (Sandbox Code Playgroud)
这会将其下载到当前目录.最简单的方法是在Windows 10上执行此操作,但有关于如何从上面的链接在早期版本的Windows上将PowerShell库添加到系统的说明.
我已经做了一个简单的功能,只是为了演示如何根据第一个解决方案做到这一点:
function Expand-Tar($tarFile, $dest) {
$pathToModule = ".\7Zip4Powershell\1.9.0\7Zip4PowerShell.psd1"
if (-not (Get-Command Expand-7Zip -ErrorAction Ignore)) {
Import-Module $pathToModule
}
Expand-7Zip $tarFile $dest
}
Run Code Online (Sandbox Code Playgroud)
$pathToModule在脚本运行时,您需要调整捆绑模块的实际存储位置,但您应该明白这一点.我编写了这个示例,您只需将上面的两个代码块粘贴到PowerShell窗口中即可获得一个有效的Expand-Tarcmdlet:
Expand-Tar archive.tar dest
Run Code Online (Sandbox Code Playgroud)
可能的解决方法:
我有Windows 10,我想在Powershell中运行curl+ tar但它缺乏支持.幸运的是,我在Windows 10上安装了Ubuntu bash,curl并tar在该环境中预先安装并运行它,然后在下载和解压后,我切换回Powershell继续我正在做的事情.
或者正如@Don Cruickshank在下面的评论中提到的,您可以直接在PowerShell中安装7zip支持Install-Package 7Zip4Powershell.该Expand-7zipcmdlet将提取多种存档格式,包括tar.
这些解决方法无法解决您的特定问题,但对于那些坚持使用Windows的解决方案可能会有用.
自从我问这个问题以来已经过去十一天了,普遍的共识是:“不,在普通窗口安装中没有可以‘为您’处理焦油提取的本机工具”。
这个答案来自Matthias R. Jensen和TessellationHeckler,他们都拒绝在评论之外回答(我怀疑是因为在不熟悉整个 Windows 系统架构的情况下不想说“不”,这是公平的)。
当然,您可以安装一些脚本、类和程序,但没有“本机”的。
| 归档时间: |
|
| 查看次数: |
21441 次 |
| 最近记录: |