43 lines
1.7 KiB
PowerShell
43 lines
1.7 KiB
PowerShell
$SourcePath = "https://go.microsoft.com/fwlink/?LinkID=809115"
|
|
$DestinationPath = "C:\dotnet"
|
|
|
|
$EditionId = (Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name 'EditionID').EditionId
|
|
|
|
if (($EditionId -eq "ServerStandardNano") -or
|
|
($EditionId -eq "ServerDataCenterNano") -or
|
|
($EditionId -eq "NanoServer") -or
|
|
($EditionId -eq "ServerTuva")) {
|
|
|
|
$TempPath = [System.IO.Path]::GetTempFileName()
|
|
if (($SourcePath -as [System.URI]).AbsoluteURI -ne $null)
|
|
{
|
|
$handler = New-Object System.Net.Http.HttpClientHandler
|
|
$client = New-Object System.Net.Http.HttpClient($handler)
|
|
$client.Timeout = New-Object System.TimeSpan(0, 30, 0)
|
|
$cancelTokenSource = [System.Threading.CancellationTokenSource]::new()
|
|
$responseMsg = $client.GetAsync([System.Uri]::new($SourcePath), $cancelTokenSource.Token)
|
|
$responseMsg.Wait()
|
|
if (!$responseMsg.IsCanceled)
|
|
{
|
|
$response = $responseMsg.Result
|
|
if ($response.IsSuccessStatusCode)
|
|
{
|
|
$downloadedFileStream = [System.IO.FileStream]::new($TempPath, [System.IO.FileMode]::Create, [System.IO.FileAccess]::Write)
|
|
$copyStreamOp = $response.Content.CopyToAsync($downloadedFileStream)
|
|
$copyStreamOp.Wait()
|
|
$downloadedFileStream.Close()
|
|
if ($copyStreamOp.Exception -ne $null)
|
|
{
|
|
throw $copyStreamOp.Exception
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
throw "Cannot copy from $SourcePath"
|
|
}
|
|
[System.IO.Compression.ZipFile]::ExtractToDirectory($TempPath, $DestinationPath)
|
|
Remove-Item $TempPath
|
|
}
|