github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cloudconfig/windowsuserdatafiles/invokewebrequest.ps1 (about)

     1  
     2  Function Invoke-FastWebRequest {
     3  	Param(
     4  		$URI,
     5  		$OutFile
     6  	)
     7  
     8  	if(!([System.Management.Automation.PSTypeName]'System.Net.Http.HttpClient').Type)
     9  	{
    10  		$assembly = [System.Reflection.Assembly]::LoadWithPartialName("System.Net.Http")
    11  	}
    12  
    13  	$client = new-object System.Net.Http.HttpClient
    14  
    15  	$task = $client.GetStreamAsync($URI)
    16  	$response = $task.Result
    17  	$outStream = New-Object IO.FileStream $OutFile, Create, Write, None
    18  
    19  	try {
    20  		$totRead = 0
    21  		$buffer = New-Object Byte[] 1MB
    22  		while (($read = $response.Read($buffer, 0, $buffer.Length)) -gt 0) {
    23  		$totRead += $read
    24  		$outStream.Write($buffer, 0, $read);
    25  		}
    26  	}
    27  	finally {
    28  		$outStream.Close()
    29  	}
    30  }
    31