Functions/Set-HttpClient.ps1

param (
  [uri]
  $Uri
)

# HttpClientを利用する準備
if ($null -eq $global:HttpClient) {
  Add-Type -AssemblyName System.Net.Http
  $handler = New-Object System.Net.Http.HttpClientHandler
  $handler.UseCookies = $false
  $global:HttpClient = New-Object System.Net.Http.HttpClient($handler)
}

# HttpClientのヘッダーを初期化
$global:HttpClient.DefaultRequestHeaders.Clear()

if ($Uri) {
  # HttpClientのDNSに関する問題への対策
  $servicePoint = [System.Net.ServicePointManager]::FindServicePoint($Uri)
  $servicePoint.ConnectionLeaseTimeout = 60 * 1000
}

<#
  .SYNOPSIS
  HttpClientのインスタンスをグローバル変数に作成します。
  .DESCRIPTION
  HttpClientのインスタンスをグローバル変数$global:HttpClientに作成します。
  .PARAMETER Uri
  HttpClientでリクエストするURIを指定します。
  .INPUTS
  なし
  .OUTPUTS
  なし
  .EXAMPLE
  PS C:\>Set-HttpClient -Uri 'https://www.google.com/'
  PS C:\>$httpHeader = $global:HttpClient.GetAsync('https://www.google.com/', 1)
 
  この例では、HttpClientのインスタンスを作成し、Googleの検索ページへリクエストを送ってHttpヘッダを取得します。
#>