windows - Sådan downloader du fuldt opbevaringssted ved hjælp af PowerShell?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger dette power shell script til at downloade filer fra Git Hub repository


$url = "https://gist.github.com/ . . ./test.jpg"
$output = "C:UsersadminDesktop	est.jpg"
$start\_time = Get-Date

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)
#OR
(New-Object System.Net.WebClient).DownloadFile($url, $output)

Write-Output "Time taken: $((Get-Date).Subtract($start\_time).Seconds) second(s)" 


Det fungerer godt for en fil. Hvordan kan jeg downloade hele depotet ved hjælp af PowerShell? Jeg kan ikke bruge git pull.


EDIT
Her er hvad jeg forsøgte på et rigtigt lager.


Repository: https://github.com/githubtraining/hellogitworld/archive/master.zip[8]


Her er en testkode, men den henter ikke depotet helt


$url = "https://github.com/githubtraining/hellogitworld/archive/master.zip"
$output = "C:UsersmycompiDesktop	estmaster.zip"
$start\_time = Get-Date

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)

Write-Output "Time taken: $((Get-Date).Subtract($start\_time).Seconds) second(s)"

Bedste reference


Du kan downloade en zipped kopi af en filial på den aktuelle HEAD fra følgende URL:


https://github.com/[owner]/[repository]/archive/[branch].zip


Så for at donwload den nuværende masterafdeling i PowerShell-depotet på GitHub for eksempel, gør du det:


$url = "https://github.com/PowerShell/PowerShell/archive/master.zip"
$output = "C:UsersadminDesktopmaster.zip"
$start\_time = Get-Date

$wc = New-Object System.Net.WebClient
$wc.DownloadFile($url, $output)

Write-Output "Time taken: $((Get-Date).Subtract($start\_time).Seconds) second(s)" 


Du kan nemt gøre dette til en genanvendelig funktion:


function Save-GitHubRepository
{
    param(
        [Parameter(Mandatory)]
        [string]$Owner,

        [Parameter(Mandatory)]
        [string]$Project,

        [Parameter()]
        [string]$Branch = 'master'
    )

    $url = "https://github.com/$Owner/$Project/archive/$Branch.zip"
    $output = Join-Path $HOME "Desktop${Project}-${Branch}\_($(Get-Date -Format yyyyMMddHHmm)).zip"
    $start\_time = Get-Date

    $wc = New-Object System.Net.WebClient
    $wc.DownloadFile($url, $output)

    Write-Host "Time taken: $((Get-Date).Subtract($start\_time).TotalSeconds) second(s)" 
}


Brug derefter det som:


PS C:> Save-GitHubRepository PowerShell PowerShell