2017-08-01 37 views
1

我试过一个简单的:如何在PowerShell中下载整个Dropbox目录?

wget https://www.dropbox.com/sh/dropboxStuff/dropboxStuff?dl=1 -O DirectoryName 

但它的下载的zip文件。

  • 什么是下载和解压只有powershell 命令的最佳方式?
  • 这可以在一行吗?
+0

什么版本的PowerShell?较新的版本有一个解压缩zip文件的cmdlet,旧版本需要一些COM对象的工作。 – alroc

+0

增加了power shell和windows版本的标签。谢谢@alroc –

回答

1

要使用PowerShell 5的Expand-Archive cmdlet可以做到这一点的一条线:

Invoke-WebRequest -Uri https://www.dropbox.com/sh/dropboxStuff/dropboxStuff?dl=1 -O temp.zip; Get-Item temp.zip | Expand-Archive -DestinationPath "FolderName"; Remove-Item temp.zip 

可能能够通过管道Invoke-WebRequestExpand-Archive-PassThru做到这一点,但我一直没能使其工作还没有。

3

在PowerShell中V5

Expand-Archive c:\a.zip -DestinationPath c:\a 

要知道你的PS vesion

$PSVersionTable.PSVersion 

如果你没有PS V5

Add-Type -AssemblyName System.IO.Compression.FileSystem 
function Unzip 
{ 
    param([string]$zipfile, [string]$outpath) 

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath) 
} 

Unzip "C:\a.zip" "C:\a" 

来源:This Question

+0

wget是在PowerShell中下载的最佳方式吗?我怎样才能将下载的结果传送给这个命令? –

+1

@GiulioCaccin Expand-Archive接受管道输入。所以你可以做'Get-Item [zipfile] |展开-Archive -DestinationPath C:\ etc' – TheIncorrigible1

+1

@GiulioCaccin我建议在'wget'上使用'Invoke-WebRequest'。默认情况下,'wget'是该cmdlet的别名,但不应该在脚本中使用别名,并且如果您没有该别名,并且实际上使用'wget',则它将成为一个外部依赖项,这会使您的脚本便携性较差。 – alroc