次の方法で共有


Invoke-RestMethod

RESTful Web サービスに HTTP または HTTPS 要求を送信します。

構文

Invoke-RestMethod
      [-Method <WebRequestMethod>]
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-RestMethod
      [-Method <WebRequestMethod>]
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-RestMethod
      -CustomMethod <String>
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-RestMethod
      -CustomMethod <String>
      [-FollowRelLink]
      [-MaximumFollowRelLink <Int32>]
      [-ResponseHeadersVariable <String>]
      [-StatusCodeVariable <String>]
      [-UseBasicParsing]
      [-Uri] <Uri>
      [-WebSession <WebRequestSession>]
      [-SessionVariable <String>]
      [-AllowUnencryptedAuthentication]
      [-Authentication <WebAuthenticationType>]
      [-Credential <PSCredential>]
      [-UseDefaultCredentials]
      [-CertificateThumbprint <String>]
      [-Certificate <X509Certificate>]
      [-SkipCertificateCheck]
      [-SslProtocol <WebSslProtocol>]
      [-Token <SecureString>]
      [-UserAgent <String>]
      [-DisableKeepAlive]
      [-TimeoutSec <Int32>]
      [-Headers <IDictionary>]
      [-MaximumRedirection <Int32>]
      [-MaximumRetryCount <Int32>]
      [-RetryIntervalSec <Int32>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]

説明

コマンドレットは Invoke-RestMethod 、高度に構造化されたデータを返す Representational State Transfer (REST) Web サービスに HTTP 要求と HTTPS 要求を送信します。

PowerShell は、データ型に基づいて応答を書式設定します。 RSS または ATOM フィードの場合、PowerShell は Item または Entry XML ノードを返します。 JavaScript Object Notation (JSON) または XML の場合、PowerShell はコンテンツを オブジェクトに [PSCustomObject] 変換または逆シリアル化します。

注意

REST エンドポイントが複数のオブジェクトを返すと、オブジェクトは配列として受信されます。 から別のコマンドに出力 Invoke-RestMethod をパイプすると、1 つの [Object[]] オブジェクトとして送信されます。 その配列の内容は、パイプラインの次のコマンドには列挙されません。

このコマンドレットは、Windows PowerShell 3.0 で導入されました。

PowerShell 7.0 以降では、 Invoke-RestMethod 環境変数によって定義されたプロキシ構成がサポートされています。 この記事の 「メモ 」セクションを参照してください。

例 1: PowerShell RSS フィードを取得する

この例では、 コマンドレットを Invoke-RestMethod 使用して、PowerShell ブログ RSS フィードから情報を取得します。 コマンドでは、 コマンドレットを Format-Table 使用して、各ブログの Title プロパティと pubDate プロパティの値をテーブルに表示します。

Invoke-RestMethod -Uri https://blogs.msdn.microsoft.com/powershell/feed/ |
  Format-Table -Property Title, pubDate

Title                                                                pubDate
-----                                                                -------
Join the PowerShell 10th Anniversary Celebration!                    Tue, 08 Nov 2016 23:00:04 +0000
DSC Resource Kit November 2016 Release                               Thu, 03 Nov 2016 00:19:07 +0000
PSScriptAnalyzer Community Call - Oct 18, 2016                       Thu, 13 Oct 2016 17:52:35 +0000
New Home for In-Box DSC Resources                                    Sat, 08 Oct 2016 07:13:10 +0000
New Social Features on Gallery                                       Fri, 30 Sep 2016 23:04:34 +0000
PowerShellGet and PackageManagement in PowerShell Gallery and GitHub Thu, 29 Sep 2016 22:21:42 +0000
PowerShell Security at DerbyCon                                      Wed, 28 Sep 2016 01:13:19 +0000
DSC Resource Kit September Release                                   Thu, 22 Sep 2016 00:25:37 +0000
PowerShell DSC and implicit remoting broken in KB3176934             Tue, 23 Aug 2016 15:07:50 +0000
PowerShell on Linux and Open Source!                                 Thu, 18 Aug 2016 15:32:02 +0000

例 2: POST 要求を実行する

この例では、ユーザーがを実行Invoke-RestMethodして、ユーザーのorganizationのイントラネット Web サイトで POST 要求を実行します。

$Cred = Get-Credential
$Url = "https://server.contoso.com:8089/services/search/jobs/export"
$Body = @{
    search = "search index=_internal | reverse | table index,host,source,sourcetype,_raw"
    output_mode = "csv"
    earliest_time = "-2d@d"
    latest_time = "-1d@d"
}
Invoke-RestMethod -Method 'Post' -Uri $url -Credential $Cred -Body $body -OutFile output.csv

資格情報の入力を求められた後、 に $Cred 格納され、アクセスする URL が で $Url定義されます。

変数は $Body 検索条件を記述し、CSV を出力モードとして指定し、2 日前から 1 日前に終了する返されるデータの期間を指定します。 body 変数は、通信している特定の REST API に適用される Invoke-RestMethod パラメーターの値を指定します。

コマンドは Invoke-RestMethod 、結果の CSV 出力ファイルのパスとファイル名を指定して、すべての変数を配置して実行されます。

例 3: 関係リンクに従う

一部の REST API では、 RFC5988ごとのリレーション リンクを使用した改ページがサポートされています。 ヘッダーを解析して次のページの URL を取得する代わりに、コマンドレットでこれを行うことができます。 この例では、PowerShell GitHub リポジトリから最初の 2 ページの問題を返します。

$url = 'https://api.github.com/repos/powershell/powershell/issues'
Invoke-RestMethod $url -FollowRelLink -MaximumFollowRelLink 2

例 4: 簡略化されたマルチパート/フォーム データ送信

一部の API では、ファイルと混合コンテンツをアップロードするために申請が必要 multipart/form-data です。 この例では、ユーザーのプロファイルを更新する方法を示します。

$Uri = 'https://api.contoso.com/v2/profile'
$Form = @{
    firstName  = 'John'
    lastName   = 'Doe'
    email      = 'john.doe@contoso.com'
    avatar     = Get-Item -Path 'c:\Pictures\jdoe.png'
    birthday   = '1980-10-15'
    hobbies    = 'Hiking','Fishing','Jogging'
}
$Result = Invoke-RestMethod -Uri $Uri -Method Post -Form $Form

プロファイル フォームには、および hobbiesの各フィールドlastNamefirstNameemailavatarbirthday必要です。 API では、ユーザー プロファイルの画像がフィールドに avatar 提供されることを想定しています。 API は、同じフォームで送信される複数 hobbies のエントリも受け入れます。

HashTable を $Form 作成するときに、キー名がフォーム フィールド名として使用されます。 既定では、HashTable の値は文字列に変換されます。 値が存在する System.IO.FileInfo 場合は、ファイルの内容が送信されます。 配列やリストなどのコレクションが存在する場合、フォーム フィールドは複数回送信されます。

キーに をavatar使用Get-Itemすると、オブジェクトがFileInfo値として設定されます。 その結果、 の画像データ jdoe.png が送信されます。

キーに hobbies リストを指定すると、 hobbies フィールドはリスト アイテムごとに 1 回送信に表示されます。

例 5: 複数のヘッダーを渡す

API では、多くの場合、認証または検証に渡されたヘッダーが必要です。 この例では、 から hash-table REST API に複数のヘッダーを渡す方法を示します。

$headers = @{
    'userId' = 'UserIDValue'
    'token' = 'TokenValue'
}
Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body

例 6: パイプラインで返された項目を列挙する

GitHub は複数のオブジェクトを配列として返します。 出力を別のコマンドにパイプすると、1 つの [Object[]]オブジェクトとして送信されます。

パイプラインにオブジェクトを列挙するには、結果 Write-Output を にパイプするか、コマンドレットをかっこで囲んでラップします。 次の例では、GitHub によって返されるオブジェクトの数をカウントします。 次に、パイプラインに列挙されたオブジェクトの数をカウントします。

$uri = 'https://api.github.com/repos/microsoftdocs/powershell-docs/issues'
$x = 0
Invoke-RestMethod -Uri $uri | ForEach-Object { $x++ }
$x
1

$x = 0
(Invoke-RestMethod -Uri $uri) | ForEach-Object { $x++ }
$x
30

$x = 0
Invoke-RestMethod -Uri $uri | Write-Output | ForEach-Object { $x++ }
$x
30

パラメーター

-AllowUnencryptedAuthentication

暗号化されていない接続を介した資格情報とシークレットの送信を許可します。 既定では、 で始https://まらない Uri資格情報または認証オプションを指定するとエラーが発生し、暗号化されていない接続を介してプレーン テキスト内のシークレットが意図せずに通信されないように要求が中止されます。 この動作を自分のリスクでオーバーライドするには、 AllowUnencryptedAuthentication パラメーターを 指定します。

警告

このパラメーターの使用は安全ではなく、推奨されません。 これは、暗号化された接続を提供できないレガシ システムとの互換性のためにのみ提供されます。 ご自身の責任で使用してください。

この機能は PowerShell 6.0.0 で追加されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Authentication

要求に使用する明示的な認証の種類を指定します。 既定値は [None](なし) です。 Authentication パラメーターを UseDefaultCredentials パラメーターと共に使用することはできません。

使用可能な認証オプション:

  • None: 認証 が指定されていない場合、これは既定のオプションです。 明示的な認証は使用されません。
  • Basic: 資格情報が必要です。 資格情報は、 の形式base64(user:password)で RFC 7617 基本認証Authorization: Basicヘッダーを送信するために使用されます。
  • Bearer: Token パラメーターが必要です。 指定されたトークンを使用して RFC 6750 Authorization: Bearer ヘッダーを送信します。
  • OAuth: Token パラメーターが必要です。 指定されたトークンを使用して RFC 6750 Authorization: Bearer ヘッダーを送信します。

認証を指定すると、ヘッダーに指定されたヘッダーまたは WebSession に含まれるヘッダーがAuthorizationオーバーライドされます。

この機能は PowerShell 6.0.0 で追加されました。

Type:WebAuthenticationType
Accepted values:None, Basic, Bearer, OAuth
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Body

要求の本文を指定します。 本文は、ヘッダーに続く要求の内容です。 本文の値を に Invoke-RestMethodパイプすることもできます。

Body パラメーターを使用すると、クエリ パラメーターのリストを指定したり、応答の内容を指定したりできます。

入力が GET 要求で、本文が (通常はハッシュ テーブル) の IDictionary 場合、本文はクエリ パラメーターとして Uniform Resource Identifier (URI) に追加されます。 その他の要求の種類 (POST など) の場合、本文は標準的な "名前=値" の形式で要求本文の値として設定されます。

本文がフォームの場合、または別 Invoke-WebRequest の呼び出しの出力である場合、PowerShell は要求コンテンツをフォーム フィールドに設定します。

Body パラメーターは、System.Net.Http.MultipartFormDataContent オブジェクトを受け取ることもできます。 これにより、要求が容易になります multipart/form-dataBodyMultipartFormDataContent オブジェクトを指定すると、ContentTypeHeaders、または WebSession パラメーターに指定されたコンテンツ関連ヘッダーは、オブジェクトのMultipartFormDataContentコンテンツ ヘッダーによってオーバーライドされます。 この機能は PowerShell 6.0.0 で追加されました。

Type:Object
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Certificate

セキュリティで保護された Web 要求に使用するクライアント証明書を指定します。 証明書が格納されている変数を入力するか、証明書を取得するコマンドまたは式を入力します。

証明書を見つけるには、証明書 (Cert:) ドライブで コマンドレットを使用Get-PfxCertificateするか、Get-ChildItem使用します。 証明書が有効でない場合、または十分な権限を持っていない場合、コマンドは失敗します。

Type:X509Certificate
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CertificateThumbprint

要求を送信するアクセス許可を持つユーザー アカウントのデジタル公開キー証明書 (X509) を指定します。 証明書の拇印を入力します。

証明書は、クライアント証明書ベースの認証で使用されます。 これらの証明書は、ローカル ユーザー アカウントにしかマップできません。ドメイン アカウントでは機能しません。

証明書の拇印を取得するには、PowerShell Cert: ドライブで または Get-ChildItem コマンドを使用Get-Itemします。

注意

この機能は現在、Windows OS プラットフォームでのみサポートされています。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ContentType

Web 要求のコンテンツ タイプを指定します。

このパラメーターを省略し、要求メソッドが POST の場合、 Invoke-RestMethod コンテンツ タイプを に application/x-www-form-urlencoded設定します。 それ以外の場合、コンテンツ タイプは呼び出しで指定されません。

Body にオブジェクトが指定されると、MultipartFormDataContentContentType はオーバーライドされます。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Credential

要求を送信するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Domain01\User01 などのユーザー名を入力するか、コマンドレットによって生成された PSCredential オブジェクトをGet-Credential入力します。

資格情報 は単独で使用することも、特定の 認証 パラメーター オプションと組み合わせて使用することもできます。 単独で使用すると、リモート サーバーが認証チャレンジ要求を送信した場合にのみ、リモート サーバーに資格情報が提供されます。 認証オプションと共に使用すると、資格情報が明示的に送信されます。

資格情報は PSCredential オブジェクトに格納され、パスワードは SecureString として格納されます。

注意

SecureString データ保護の詳細については、SecureString のセキュリティ保護に関するページを参照してください。

Type:PSCredential
Position:Named
Default value:Current user
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CustomMethod

Web 要求に使用するカスタム メソッドを指定します。 これは、エンドポイントで必要な Request メソッドがメソッドで使用できないオプションで使用できます。 メソッドCustomMethod を一緒に使用することはできません。

例:

Invoke-RestMethod -uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'

これにより、 TEST API に対する HTTP 要求が行われます。

この機能は PowerShell 6.0.0 で追加されました。

Type:String
Aliases:CM
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-DisableKeepAlive

コマンドレットが HTTP ヘッダーの KeepAlive 値を False に設定することを示します。 既定では、KeepAlive は True です。 KeepAlive は、後続の要求を容易にするために、サーバーへの永続的な接続を確立します。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

コマンドレットが関係リンクに従う必要があることを示します。

一部の REST API では、 RFC5988ごとのリレーション リンクを使用した改ページがサポートされています。 ヘッダーを解析して次のページの URL を取得する代わりに、コマンドレットでこれを行うことができます。 関係リンクをたどる回数を設定するには、 MaximumFollowRelLink パラメーターを使用します。

このスイッチを使用すると、コマンドレットは結果のページのコレクションを返します。 結果の各ページには、複数の結果項目が含まれる場合があります。

この機能は PowerShell 6.0.0 で追加されました。

Type:SwitchParameter
Aliases:FL
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Form

辞書を申請に multipart/form-data 変換します。 Body ではフォームを使用できません。 ContentType が無視される場合。

ディクショナリのキーは、フォーム フィールド名として使用されます。 既定では、フォーム値は文字列値に変換されます。

値が System.IO.FileInfo オブジェクトの場合、バイナリ ファイルの内容が送信されます。 ファイルの名前は として filename送信されます。 MIME は として application/octet-stream設定されます。 Get-Item を使用すると、 System.IO.FileInfo オブジェクトの指定を簡略化できます。

$Form = @{ resume = Get-Item 'c:\Users\jdoe\Documents\John Doe.pdf' }

値が Array や List などのコレクション型の場合、for フィールドは複数回送信されます。 リストの値は、既定で文字列として扱われます。 値が System.IO.FileInfo オブジェクトの場合、バイナリ ファイルの内容が送信されます。 入れ子になったコレクションはサポートされていません。

$Form = @{ tags = 'Vacation', 'Italy', '2017' pictures = Get-ChildItem 'c:\Users\jdoe\Pictures\2017-Italy' }

上記の例では、tagsフィールドは、および 2017のそれぞれにVacationItaly対して 1 回、フォームに 3 回指定されます。 フィールドは pictures 、フォルダー内 2017-Italy のファイルごとに 1 回送信されます。 そのフォルダー内のファイルのバイナリ コンテンツは、値として送信されます。

この機能は、PowerShell 6.1.0 で追加されました。

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Headers

Web 要求のヘッダーを指定します。 ハッシュ テーブルまたは辞書を入力します。

UserAgent ヘッダーを設定するには、UserAgent パラメーターを使用します。 このパラメーターを使用して、または Cookie ヘッダーを指定 User-Agent することはできません。

などのContent-Typeコンテンツ関連ヘッダーは、Body にオブジェクトがMultipartFormDataContent指定されるとオーバーライドされます。

Type:IDictionary
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-InFile

ファイルから Web 要求の内容を取得します。

パスとファイル名を入力します。 パスを省略した場合、既定値は現在のディレクトリです。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

FollowRelLink を使用する場合に関係リンクをフォローする回数を指定します。 要求が多すぎるために REST API が調整される場合は、より小さな値が必要になる場合があります。 既定値は [Int32]::MaxValue です。 値が 0 (ゼロ) の場合、次の関係リンクは使用できなくなります。

Type:Int32
Aliases:ML
Position:Named
Default value:Int32.MaxValue
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumRedirection

接続が失敗するまでに、PowerShell が代替の Uniform Resource Identifier (URI) に接続をリダイレクトする回数を指定します。 既定値は 5 です。 値 0 (ゼロ) を指定した場合、リダイレクトはまったく行われません。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-MaximumRetryCount

400 から 599 までのエラー コード (304 を含む) を受信したときに、PowerShell が接続を再試行する回数を指定します。 再試行回数の指定については、「 RetryIntervalSec パラメーター」も参照してください。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Method

Web 要求に使用するメソッドを指定します。 このパラメーターの有効値は、次のとおりです。

  • Default
  • Delete
  • Get
  • Head
  • Merge
  • Options
  • Patch
  • Post
  • Put
  • Trace

CustomMethod パラメーターは、上記に記載されていない要求メソッドに使用できます。

Type:WebRequestMethod
Accepted values:Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-NoProxy

コマンドレットがプロキシを使用して宛先に到達しないことを示します。

インターネット エクスプローラーで構成されているプロキシ、または環境で指定されたプロキシをバイパスする必要がある場合は、このスイッチを使用します。

このパラメーターは PowerShell 6.0 で導入されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-OutFile

指定した出力ファイルに応答本文を保存します。 パスとファイル名を入力します。 パスを省略した場合、既定値は現在のディレクトリです。 名前はリテラル パスとして扱われます。 角かっこ ([]) を含む名前は、単一引用符 (') で囲む必要があります。

既定では、 Invoke-RestMethod は結果をパイプラインに返します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PassThru

このパラメーターは、同時に OutFile パラメーターがコマンドで使用されている場合にのみ有効です。 目的は、結果をファイルとパイプラインに書き込むという目的です。

注意

PassThru パラメーターを使用すると、出力はパイプラインに書き込まれますが、ファイルは作成されません。 詳細については、「 PowerShell の問題 #15409」を参照してください。

Type:SwitchParameter
Position:Named
Default value:No output
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-PreserveAuthorizationOnRedirect

コマンドレットがリダイレクト間でヘッダーを Authorization 保持する必要があることを示します。

既定では、コマンドレットはリダイレクトする前にヘッダーを Authorization 削除します。 このパラメーターを指定すると、ヘッダーをリダイレクトの場所に送信する必要がある場合にこのロジックが無効になります。

この機能は PowerShell 6.0.0 で追加されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Proxy

インターネット リソースに直接接続するのではなく、要求にプロキシ サーバーを使用します。 ネットワーク プロキシ サーバーの Uniform Resource Identifier (URI) を入力します。

この機能は PowerShell 6.0.0 で追加されました。

Type:Uri
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ProxyCredential

Proxy パラメーターに指定したプロキシ サーバーを使用するアクセス許可を持つユーザー アカウントを指定します。 既定値は現在のユーザーです。

User01 や Domain01\User01 などのユーザー名を入力するか、 User@Domain.Comコマンドレットによって生成されたオブジェクトなどのオブジェクトをGet-Credential入力PSCredentialします。

このパラメーターは、 Proxy パラメーターが コマンドでも使用されている場合にのみ有効です。 同じコマンドで ProxyCredential パラメーターと ProxyUseDefaultCredentials パラメーターを使用することはできません。

Type:PSCredential
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ProxyUseDefaultCredentials

コマンドレットが現在のユーザーの資格情報を使用して、 Proxy パラメーターで指定されたプロキシ サーバーにアクセスすることを示します。

このパラメーターは、 Proxy パラメーターが コマンドでも使用されている場合にのみ有効です。 同じコマンドで ProxyCredential パラメーターと ProxyUseDefaultCredentials パラメーターを使用することはできません。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-ResponseHeadersVariable

応答ヘッダー ディクショナリを含む変数を作成します。 ドル記号 ($) 記号を使用せずに変数名を入力します。 ディクショナリのキーには、Web サーバーによって返される応答ヘッダーのフィールド名と値が含まれます。

この機能は PowerShell 6.0.0 で追加されました。

Type:String
Aliases:RHV
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Resume

部分ファイルのダウンロードを再開するためのベスト エフォート試行を実行します。 Resume パラメーターには OutFile パラメーターが必要です。

Resume は、ローカル ファイルとリモート ファイルのサイズに対してのみ機能し、ローカル ファイルとリモート ファイルが同じであるという他の検証は実行しません。

ローカル ファイル サイズがリモート ファイル サイズよりも小さい場合、コマンドレットはファイルのダウンロードを再開し、残りのバイトをファイルの末尾に追加しようとします。

ローカル ファイル サイズがリモート ファイル サイズと同じ場合、アクションは実行されません。コマンドレットはダウンロードが既に完了していることを前提としています。

ローカル ファイル サイズがリモート ファイル サイズより大きい場合は、ローカル ファイルが上書きされ、リモート ファイル全体が完全に再ダウンロードされます。 この動作は、Resume なしで OutFile を使用する場合と同じです。

リモート サーバーがダウンロード再開をサポートしていない場合は、ローカル ファイルが上書きされ、リモート ファイル全体が完全に再ダウンロードされます。 この動作は、Resume なしで OutFile を使用する場合と同じです。

ローカル ファイルが存在しない場合は、ローカル ファイルが作成され、リモート ファイル全体が完全にダウンロードされます。 この動作は、Resume なしで OutFile を使用する場合と同じです。

この機能は、PowerShell 6.1.0 で追加されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-RetryIntervalSec

400 から 599 までのエラー コード (304 を含む) を受信したときの接続の再試行間隔を指定します。 再試行回数の指定については、「 MaximumRetryCount パラメーター」も参照してください。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SessionVariable

Web 要求セッションを含む変数を作成します。 ドル記号 ($) 記号を使用せずに変数名を入力します。

セッション変数を指定すると、 Invoke-RestMethod Web 要求セッション オブジェクトが作成され、PowerShell セッションで指定された名前の変数に割り当てられます。 コマンドが完了すると、すぐに変数をセッションで使用できます。

リモート セッションとは異なり、Web 要求セッションは永続的な接続ではありません。 これは、Cookie、資格情報、最大リダイレクト値、ユーザー エージェント文字列など、接続と要求に関する情報を含むオブジェクトです。 Web 要求セッションを使用して、Web 要求の間で状態とデータを共有することができます。

後続の Web 要求で Web 要求セッションを使用するには、WebSession パラメーターの値にセッション変数を指定します。 PowerShell は、新しい接続を確立するときに、Web 要求セッション オブジェクトのデータを使用します。 Web 要求セッションの値をオーバーライドするには、UserAgentCredential などのコマンドレット パラメーターを使用します。 パラメーターの値は、Web 要求セッションの値よりも優先されます。

SessionVariable パラメーターと WebSession パラメーターを同じコマンドで使用することはできません。

Type:String
Aliases:SV
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipCertificateCheck

有効期限、失効、信頼されたルート機関などのすべての検証を含む証明書検証チェックをスキップします。

警告

このパラメーターの使用は安全ではなく、推奨されません。 このスイッチは、テスト目的で自己署名証明書を使用して既知のホストに対してのみ使用することを目的としています。 ご自身の責任で使用してください。

この機能は PowerShell 6.0.0 で追加されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipHeaderValidation

コマンドレットが検証なしで要求にヘッダーを追加する必要があることを示します。

このスイッチは、標準に準拠していないヘッダー値を必要とするサイトに使用する必要があります。 このスイッチを指定すると、検証が無効になり、値をオフにして渡すことができます。 指定すると、すべてのヘッダーが検証なしで追加されます。

これにより、 ContentTypeHeadersおよび UserAgent パラメーターに渡される値の検証が無効になります。

この機能は PowerShell 6.0.0 で追加されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SkipHttpErrorCheck

このパラメーターを指定すると、コマンドレットは HTTP エラーの状態を無視し、応答の処理を続行します。 エラー応答は、成功したかのようにパイプラインに書き込まれます。

このパラメーターは PowerShell 7 で導入されました。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-SslProtocol

Web 要求に対して許容される SSL/TLS プロトコルを設定します。 既定では、システムでサポートされている SSL/TLS プロトコルはすべて許可されます。 SslProtocol を使用すると、コンプライアンスのために特定のプロトコルに制限できます。

これらの値は、フラグ ベースの列挙体として定義されます。 複数の値を組み合わせて、このパラメーターを使用して複数のフラグを設定できます。 値は、値の配列として、またはそれらの値のコンマ区切り文字列として SslProtocol パラメーターに渡すことができます。 コマンドレットは、binary-OR 操作を使用して値を結合します。 配列として値を渡すことは最も簡単なオプションであり、値にタブ補完を使用することもできます。 すべてのプラットフォームで複数の値を指定できない場合があります。

注意

Windows 以外のプラットフォームでは、 または Tls12 をオプションとして提供Tlsできない場合があります。 の Tls13 サポートはすべてのオペレーティング システムで利用できるわけではありません。オペレーティング システムごとに確認する必要があります。

この機能は PowerShell 6.0.0 で追加され、 の Tls13 サポートは PowerShell 7.1 で追加されました。

Type:WebSslProtocol
Accepted values:Default, Tls, Tls11, Tls12, Tls13
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-StatusCodeVariable

要求の HTTP 状態コードの結果を含む変数を作成します。 ドル記号 ($) 記号を使用せずに変数名を入力します。

パラメーターは、 SkipHttpErrorCheck パラメーターと共に使用すると、成功メッセージまたは失敗メッセージを識別できます。

パラメーターの変数名を などの -StatusCodeVariable "scv"文字列として入力します。

このパラメーターは PowerShell 7 で導入されました。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TimeoutSec

要求がタイムアウトするまでの保留中の期間を指定します。値を秒単位で入力します。 既定値は 0 で、無制限のタイムアウトを意味しています。

ドメイン ネーム システム (DNS) クエリが返されるか、タイムアウトするまでに最大 15 秒かかる場合があります。要求に解決が必要なホスト名が含まれており、 TimeoutSec を 0 より大きい値 (15 秒未満) に設定した場合、WebException がスローされるまでに 15 秒以上かかる可能性があり、要求はタイムアウトします。

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Token

要求に含める OAuth またはベアラー トークン。 トークン は、特定の 認証 オプションで必要です。 個別に使用することはできません。

トークン は、トークンを SecureString 含む を受け取ります。 トークンを指定するには、次を手動で使用します。

Invoke-RestMethod -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)

このパラメーターは PowerShell 6.0 で導入されました。

Type:SecureString
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-TransferEncoding

転送エンコード HTTP 応答ヘッダーの値を指定します。 このパラメーターの有効値は、次のとおりです。

  • チャンク
  • 圧縮
  • Deflate
  • GZip
  • ID
Type:String
Accepted values:chunked, compress, deflate, gzip, identity
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Uri

Web 要求の送信先となるインターネット リソースの URI (Uniform Resource Identifier) を指定します。 このパラメーターは、HTTP、HTTPS、FTP、FILE の値をサポートします。

このパラメーターは必須です。 パラメーター名 (Uri) は省略可能です。

Type:Uri
Position:0
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-UseBasicParsing

このパラメーターは非推奨になりました。 PowerShell 6.0.0 以降では、すべての Web 要求で基本的な解析のみが使用されます。 このパラメーターは下位互換性のためにのみ含まれており、このパラメーターを使用してもコマンドレットの操作には影響しません。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UseDefaultCredentials

コマンドレットが現在のユーザーの資格情報を使用して Web 要求を送信することを示します。 これは 認証 または 資格情報 では使用できません。また、すべてのプラットフォームでサポートされているわけではありません。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-UserAgent

Web 要求のユーザー エージェント文字列を指定します。

既定のユーザー エージェントは、 と似ています Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 が、オペレーティング システムとプラットフォームごとに若干のバリエーションがあります。

ほとんどのインターネット ブラウザーで使用される標準ユーザー エージェント文字列を使用して Web サイトをテストするには、Chrome、FireFox、InternetExplorer、Opera、Safari などの PSUserAgent クラスのプロパティを使用します。

Type:String
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-WebSession

Web 要求セッションを指定します。 ドル記号 ($) を含む変数名を入力します。

Web 要求セッションの値をオーバーライドするには、UserAgentCredential などのコマンドレット パラメーターを使用します。 パラメーターの値は、Web 要求セッションの値よりも優先されます。 などのContent-Typeコンテンツ関連ヘッダーは、BodyMultipartFormDataContent オブジェクトが指定されている場合にもオーバーライドされます。

リモート セッションとは異なり、Web 要求セッションは永続的な接続ではありません。 これは、Cookie、資格情報、最大リダイレクト値、ユーザー エージェント文字列など、接続と要求に関する情報を含むオブジェクトです。 Web 要求セッションを使用して、Web 要求の間で状態とデータを共有することができます。

Web 要求セッションを作成するには、コマンドの SessionVariable パラメーターの値に、ドル記号を付けずに変数名を Invoke-RestMethod 入力します。 Invoke-RestMethod はセッションを作成し、 変数に保存します。 後続のコマンドで、この変数を WebSession パラメーターの値として使用します。

SessionVariable パラメーターと WebSession パラメーターを同じコマンドで使用することはできません。

Type:WebRequestSession
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

入力

Object

Web 要求の本文を に Invoke-RestMethodパイプできます。

出力

System.Int64, System.String, System.Xml.XmlDocument

このコマンドレットの出力は、取得するコンテンツの書式によって異なります。

PSObject

要求が JSON 文字列を返す場合は、 Invoke-RestMethod 文字列を表す PSObject を返します。

メモ

一部の機能は、すべてのプラットフォームで使用できない場合があります。

.NET Core 3.1 の変更により、PowerShell 7.0 以降では HttpClient.DefaultProxy プロパティを使用してプロキシ構成を決定します。

このプロパティの値は、プラットフォームによって異なる規則です。

  • Windows の場合: 環境変数からプロキシ構成を読み取るか、定義されていない場合はユーザーのプロキシ設定から読み取ります。
  • macOS の場合: 環境変数からプロキシ構成を読み取るか、定義されていない場合はシステムのプロキシ設定から読み取ります。
  • Linux の場合: 環境変数からプロキシ構成を読み取るか、定義されていない場合は、すべてのアドレスをバイパスする構成されていないインスタンスを初期化します。

Windows と Unix ベースのプラットフォームで DefaultProxy の初期化に使用される環境変数は、次のとおりです。

  • HTTP_PROXY: HTTP 要求で使用されるプロキシ サーバーのホスト名または IP アドレス。
  • HTTPS_PROXY: HTTPS 要求で使用されるプロキシ サーバーのホスト名または IP アドレス。
  • ALL_PROXY: HTTP および HTTPS 要求で使用されるプロキシ サーバーのホスト名または HTTPS_PROXY IP アドレス。またはHTTP_PROXYが定義されていません。
  • NO_PROXY: プロキシから除外するホスト名のコンマ区切りの一覧。