Invoke-WebRequest

Mendapatkan konten dari halaman web di internet.

Sintaks

Invoke-WebRequest
      [-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>]
      [-Method <WebRequestMethod>]
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-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>]
      [-Method <WebRequestMethod>]
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-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>]
      -CustomMethod <String>
      [-Proxy <Uri>]
      [-ProxyCredential <PSCredential>]
      [-ProxyUseDefaultCredentials]
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]
Invoke-WebRequest
      [-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>]
      -CustomMethod <String>
      -NoProxy
      [-Body <Object>]
      [-Form <IDictionary>]
      [-ContentType <String>]
      [-TransferEncoding <String>]
      [-InFile <String>]
      [-OutFile <String>]
      [-PassThru]
      [-Resume]
      [-SkipHttpErrorCheck]
      [-PreserveAuthorizationOnRedirect]
      [-SkipHeaderValidation]
      [<CommonParameters>]

Deskripsi

Invoke-WebRequest Cmdlet mengirimkan permintaan HTTP dan HTTPS ke halaman web atau layanan web. Ini mengurai respons dan mengembalikan kumpulan tautan, gambar, dan elemen HTML signifikan lainnya.

Cmdlet ini diperkenalkan di PowerShell 3.0.

Dimulai di PowerShell 7.0, Invoke-WebRequest mendukung konfigurasi proksi yang ditentukan oleh variabel lingkungan. Lihat bagian Catatan di artikel ini.

Penting

Contoh dalam artikel ini mereferensikan host di contoso.com domain. Ini adalah domain fiktif yang digunakan oleh Microsoft misalnya. Contoh dirancang untuk menunjukkan cara menggunakan cmdlet. Namun, karena contoso.com situs tidak ada, contohnya tidak berfungsi. Sesuaikan contoh ke host di lingkungan Anda.

Contoh

Contoh 1: Mengirim permintaan web

Contoh ini menggunakan Invoke-WebRequest cmdlet untuk mengirim permintaan web ke situs Bing.com.

$Response = Invoke-WebRequest -URI https://www.bing.com/search?q=how+many+feet+in+a+mile
$Response.InputFields | Where-Object {
    $_.name -like "* Value*"
} | Select-Object Name, Value

name       value
----       -----
From Value 1
To Value   5280

Perintah pertama mengeluarkan permintaan dan menyimpan respons dalam $Response variabel.

Perintah kedua mendapatkan InputField di mana properti Nama seperti "* Value". Hasil yang difilter disalurkan ke untuk Select-Object memilih properti Nama dan Nilai .

Contoh 2: Menggunakan layanan web stateful

Contoh ini menunjukkan cara menggunakan Invoke-WebRequest cmdlet dengan layanan web stateful.

$LoginParameters = @{
    Uri             = 'https://www.contoso.com/login/'
    SessionVariable = 'Session'
    Method          = 'POST'
    Body            = @{
        User     = 'jdoe'
        Password = 'P@S$w0rd!'
    }
}
$LoginResponse = Invoke-WebRequest @LoginParameters
$ProfileResponse = Invoke-WebRequest 'https://www.contoso.com/profile/' -WebSession $Session

Panggilan pertama untuk Invoke-WebRequest mengirim permintaan masuk. Perintah menentukan nilai Session untuk nilai parameter SessionVariable . Ketika perintah selesai, $LoginResponse variabel berisi BasicHtmlWebResponseObject dan $Session variabel berisi WebRequestSession objek. Ini mencatat pengguna ke situs.

Panggilan kedua untuk Invoke-WebRequest mengambil profil pengguna, yang mengharuskan pengguna masuk ke situs. Data sesi yang $Session disimpan dalam variabel menyediakan cookie sesi ke situs yang dibuat selama login.

Contoh 3: Mendapatkan tautan dari halaman web

Contoh ini mendapatkan tautan di halaman web. Ini menggunakan Invoke-WebRequest cmdlet untuk mendapatkan konten halaman web. Kemudian menggunakan properti Tautan dari BasicHtmlWebResponseObject yang Invoke-WebRequest mengembalikan, dan properti Href dari setiap tautan.

(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href

Contoh 4: Menulis konten respons ke file menggunakan pengodean yang ditentukan di halaman yang diminta

Contoh ini menggunakan Invoke-WebRequest cmdlet untuk mengambil konten halaman web halaman dokumentasi PowerShell.

$Response = Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs"
$Stream = [System.IO.StreamWriter]::new('.\docspage.html', $false, $Response.Encoding)
try {
    $Stream.Write($Response.Content)
} finally {
    $Stream.Dispose()
}

Perintah pertama mengambil halaman dan menyimpan objek respons dalam $Response variabel.

Perintah kedua membuat StreamWriter untuk digunakan untuk menulis konten respons ke file. Properti Pengodean objek respons digunakan untuk mengatur pengodean untuk file.

Beberapa perintah terakhir menulis properti Konten ke file lalu membuang StreamWriter.

Perhatikan bahwa properti Pengodean null jika permintaan web tidak mengembalikan konten teks.

Contoh 5: Mengirimkan file multipart/form-data

Contoh ini menggunakan Invoke-WebRequest cmdlet mengunggah file sebagai multipart/form-data pengiriman. File c:\document.txt dikirimkan sebagai bidang document formulir dengan Content-Type dari text/plain.

$FilePath = 'c:\document.txt'
$FieldName = 'document'
$ContentType = 'text/plain'

$FileStream = [System.IO.FileStream]::new($filePath, [System.IO.FileMode]::Open)
$FileHeader = [System.Net.Http.Headers.ContentDispositionHeaderValue]::new('form-data')
$FileHeader.Name = $FieldName
$FileHeader.FileName = Split-Path -leaf $FilePath
$FileContent = [System.Net.Http.StreamContent]::new($FileStream)
$FileContent.Headers.ContentDisposition = $FileHeader
$FileContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse($ContentType)

$MultipartContent = [System.Net.Http.MultipartFormDataContent]::new()
$MultipartContent.Add($FileContent)

$Response = Invoke-WebRequest -Body $MultipartContent -Method 'POST' -Uri 'https://api.contoso.com/upload'

Contoh 6: Pengiriman Multipihak/Formulir-Data yang Disederhanakan

Beberapa API memerlukan multipart/form-data pengiriman untuk mengunggah file dan konten campuran. Contoh ini menunjukkan pembaruan profil pengguna.

$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-WebRequest -Uri $Uri -Method Post -Form $Form

Formulir profil memerlukan bidang-bidang ini: firstName, , lastName, emailavatar, birthday, dan hobbies. API mengharapkan gambar untuk gambar profil pengguna disediakan di avatar bidang . API juga menerima beberapa hobbies entri untuk dikirimkan dalam formulir yang sama.

Saat membuat $Form HashTable, nama kunci digunakan sebagai nama bidang formulir. Secara default, nilai HashTable dikonversi menjadi string. Jika ada nilai System.IO.FileInfo , konten file akan dikirimkan. Jika koleksi seperti array atau daftar ada, bidang formulir dikirimkan beberapa kali.

Menggunakan Get-Item pada kunci avatar , FileInfo objek diatur sebagai nilai . Hasilnya adalah bahwa data gambar untuk jdoe.png dikirimkan.

Dengan menyediakan daftar ke hobbies kunci, hobbies bidang ada dalam pengiriman sekali untuk setiap item daftar.

Contoh 7: Menangkap pesan yang tidak berhasil dari Invoke-WebRequest

Ketika Invoke-WebRequest menemukan pesan HTTP yang tidak berhasil (404, 500, dll.), pesan HTTP tidak mengembalikan output dan melemparkan kesalahan yang mengakhiri. Untuk menangkap kesalahan dan melihat StatusCode , Anda dapat mengapit eksekusi dalam try/catch blok.

try
{
    $Response = Invoke-WebRequest -Uri "www.microsoft.com/unkownhost"
    # This will only execute if the Invoke-WebRequest is successful.
    $StatusCode = $Response.StatusCode
} catch {
    $StatusCode = $_.Exception.Response.StatusCode.value__
}
$StatusCode

404

Kesalahan penghentian ditangkap oleh catch blok , yang mengambil StatusCode dari objek Pengecualian .

Contoh 8: Mengunduh beberapa file secara bersamaan

Invoke-WebRequest Cmdlet hanya dapat mengunduh satu file pada satu waktu. Contoh berikut menggunakan Start-ThreadJob untuk membuat beberapa pekerjaan utas untuk mengunduh beberapa file secara bersamaan.

$baseUri = 'https://github.com/PowerShell/PowerShell/releases/download'
$files = @(
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.msi"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.3.0-preview.5/PowerShell-7.3.0-preview.5-win-x64.zip"
        OutFile = 'PowerShell-7.3.0-preview.5-win-x64.zip'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.msi"
        OutFile = 'PowerShell-7.2.5-win-x64.msi'
    },
    @{
        Uri = "$baseUri/v7.2.5/PowerShell-7.2.5-win-x64.zip"
        OutFile = 'PowerShell-7.2.5-win-x64.zip'
    }
)

$jobs = @()

foreach ($file in $files) {
    $jobs += Start-ThreadJob -Name $file.OutFile -ScriptBlock {
        $params = $using:file
        Invoke-WebRequest @params
    }
}

Write-Host "Downloads started..."
Wait-Job -Job $jobs

foreach ($job in $jobs) {
    Receive-Job -Job $job
}

Contoh 9: Melewati Validasi Header

Secara default, Invoke-WebRequest cmdlet memvalidasi nilai header terkenal yang memiliki format nilai yang ditentukan standar. Contoh berikut menunjukkan bagaimana validasi ini dapat menimbulkan kesalahan dan bagaimana Anda dapat menggunakan parameter SkipHeaderValidation untuk menghindari validasi nilai untuk titik akhir yang mentolerir nilai yang diformat secara tidak valid.

$Uri = 'https://httpbin.org/headers'
$InvalidHeaders = @{
    'If-Match' = '12345'
}

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders

Invoke-WebRequest -Uri $Uri -Headers $InvalidHeaders -SkipHeaderValidation

Invoke-WebRequest: The format of value '12345' is invalid.

StatusCode        : 200
StatusDescription : OK
Content           : {
                      "headers": {
                        "Host": "httpbin.org",
                        "If-Match": "12345",
                        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.19044; en-US) PowerShell/7.2.5",
                        "X-Amzn-Trace-Id": �
RawContent        : HTTP/1.1 200 OK
                    Date: Mon, 08 Aug 2022 16:24:24 GMT
                    Connection: keep-alive
                    Server: gunicorn/19.9.0
                    Access-Control-Allow-Origin: *
                    Access-Control-Allow-Credentials: true
                    Content-Type: application�
Headers           : {[Date, System.String[]], [Connection, System.String[]], [Server, System.String[]], [Access-Control-Allow-Origin, System.String[]]�}
Images            : {}
InputFields       : {}
Links             : {}
RawContentLength  : 249
RelationLink      : {}

httpbin.org adalah layanan yang mengembalikan informasi tentang permintaan web dan respons untuk pemecahan masalah. Variabel $Uri ditetapkan ke /headers titik akhir layanan, yang mengembalikan header permintaan sebagai konten dalam responsnya.

If-Match Header permintaan didefinisikan dalam RFC-7232 bagian 3.1 dan memerlukan nilai untuk header tersebut untuk didefinisikan dengan tanda kutip di sekitarnya. Variabel $InvalidHeaders diberi tabel hash di mana nilai If-Match tidak valid karena didefinisikan sebagai 12345 alih-alih "12345".

Memanggil Invoke-WebRequest dengan header yang tidak valid mengembalikan laporan kesalahan yang melaporkan bahwa nilai yang diformat tidak valid. Permintaan tidak dikirim ke titik akhir.

Memanggil Invoke-WebRequest dengan parameter SkipHeaderValidation mengabaikan kegagalan validasi dan mengirim permintaan ke titik akhir. Karena titik akhir mentolerir nilai header yang tidak sesuai, cmdlet mengembalikan objek respons tanpa kesalahan.

Parameter

-AllowUnencryptedAuthentication

Memungkinkan pengiriman kredensial dan rahasia melalui koneksi yang tidak terenkripsi. Secara default, menyediakan Kredensial atau opsi Autentikasi apa pun dengan Uri yang tidak dimulai dengan https:// menghasilkan kesalahan dan permintaan dibatalkan untuk mencegah rahasia yang tidak sengaja berkomunikasi dalam teks biasa melalui koneksi yang tidak terenkripsi. Untuk mengambil alih perilaku ini dengan risiko Anda sendiri, berikan parameter AllowUnencryptedAuthentication .

Peringatan

Menggunakan parameter ini tidak aman dan tidak disarankan. Ini disediakan hanya untuk kompatibilitas dengan sistem warisan yang tidak dapat menyediakan koneksi terenkripsi. Gunakan dengan risiko Anda sendiri.

Fitur ini ditambahkan di PowerShell 6.0.0.

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

-Authentication

Menentukan jenis autentikasi eksplisit yang akan digunakan untuk permintaan. Default Tidak Ada. Parameter Autentikasi tidak dapat digunakan dengan parameter UseDefaultCredentials .

Opsi Autentikasi yang Tersedia:

  • None: Ini adalah opsi default saat Autentikasi tidak disediakan. Tidak ada autentikasi eksplisit yang digunakan.
  • Basic: Memerlukan Kredensial. Kredensial dikirim sebagai header Autentikasi Authorization: Basic Dasar RFC 7617 dalam format base64(user:password).
  • Bearer: Memerlukan parameter Token . Mengirim header RFC 6750 Authorization: Bearer dengan token yang disediakan.
  • OAuth: Memerlukan parameter Token . Mengirim header RFC 6750 Authorization: Bearer dengan token yang disediakan.

Menyediakan Autentikasi mengambil alih header apa pun Authorization yang disediakan ke Header atau disertakan dalam WebSession.

Fitur ini ditambahkan di 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

Menentukan isi permintaan. Isi adalah konten permintaan yang mengikuti header. Anda juga dapat menyalurkan nilai isi ke Invoke-WebRequest.

Parameter Isi dapat digunakan untuk menentukan daftar parameter kueri atau menentukan konten respons.

Ketika input adalah permintaan POST dan isinya adalah String, nilai di sebelah kiri tanda sama dengan pertama (=) diatur sebagai kunci dalam data formulir dan teks yang tersisa ditetapkan sebagai nilai . Untuk menentukan beberapa kunci, gunakan objek IDictionary , seperti tabel hash, untuk Isi.

Ketika input adalah permintaan GET dan isinya adalah IDictionary (biasanya, tabel hash), isi ditambahkan ke URI sebagai parameter kueri. Untuk jenis permintaan lain (seperti PATCH), isi diatur sebagai nilai isi permintaan dalam format standar name=value dengan nilai yang dikodekan URL.

Ketika input adalah objek System.Xml.XmlNode dan deklarasi XML menentukan pengodean, pengodean tersebut digunakan untuk data dalam permintaan kecuali ditimpa oleh parameter ContentType .

Parameter Isi juga menerima System.Net.Http.MultipartFormDataContent objek. Ini memfasilitasi multipart/form-data permintaan. Ketika objek MultipartFormDataContent disediakan untuk Isi, header terkait Konten apa pun yang disediakan ke parameter ContentType, Header, atau WebSession ditimpa oleh header Konten objek MultipartFormDataContent. Fitur ini ditambahkan di PowerShell 6.0.0.

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

-Certificate

Menentukan sertifikat klien yang digunakan untuk permintaan web yang aman. Masukkan variabel yang berisi sertifikat atau perintah atau ekspresi yang mendapatkan sertifikat.

Untuk menemukan sertifikat, gunakan Get-PfxCertificate atau gunakan Get-ChildItem cmdlet di drive Sertifikat (Cert:). Jika sertifikat tidak valid atau tidak memiliki otoritas yang memadai, perintah gagal.

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

-CertificateThumbprint

Menentukan sertifikat kunci publik digital (X509) dari akun pengguna yang memiliki izin untuk mengirim permintaan. Masukkan thumbprint sertifikat sertifikat.

Sertifikat digunakan dalam autentikasi berbasis sertifikat klien. Sertifikat hanya dapat dipetakan ke akun pengguna lokal, bukan akun domain.

Untuk melihat thumbprint sertifikat, gunakan Get-Item perintah atau Get-ChildItem untuk menemukan sertifikat di Cert:\CurrentUser\My.

Catatan

Fitur ini hanya didukung pada platform OS Windows.

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

-ContentType

Menentukan tipe isi permintaan web.

Jika nilai untuk ContentType berisi format pengodean (sebagai charset), cmdlet menggunakan format tersebut untuk mengodekan isi permintaan web. Jika ContentType tidak menentukan format pengodean, format pengodean default akan digunakan sebagai gantinya. Contoh ContentType dengan format pengodean adalah text/plain; charset=iso-8859-5, yang menentukan alfabet Latin/Sirilik .

Jika parameter ini dihilangkan dan metode permintaan adalah POST, Invoke-WebRequest atur jenis konten ke application/x-www-form-urlencoded. Jika tidak, tipe konten tidak ditentukan dalam panggilan.

ContentType ditimpa ketika objek MultipartFormDataContent disediakan untuk Isi.

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

-Credential

Menentukan akun pengguna yang memiliki izin untuk mengirim permintaan. Defaultnya adalah pengguna saat ini.

Ketik nama pengguna, seperti User01 atau Domain01\User01, atau masukkan objek PSCredential yang dihasilkan oleh Get-Credential cmdlet.

Kredensial dapat digunakan sendiri atau bersama dengan opsi parameter Autentikasi tertentu. Ketika digunakan sendiri, server jarak jauh hanya menyediakan kredensial ke server jarak jauh jika server jarak jauh mengirim permintaan tantangan autentikasi. Saat digunakan dengan opsi Autentikasi , kredensial dikirim secara eksplisit.

Kredensial disimpan dalam objek PSCredential dan kata sandi disimpan sebagai SecureString.

Catatan

Untuk informasi selengkapnya tentang perlindungan data SecureString , lihat Seberapa aman SecureString?.

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

-CustomMethod

Menentukan metode kustom yang digunakan untuk permintaan web. Ini dapat digunakan jika Metode Permintaan yang diperlukan oleh titik akhir bukan opsi yang tersedia pada Metode. Metode dan CustomMethod tidak dapat digunakan bersama-sama.

Contoh ini membuat TEST permintaan HTTP ke API:

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

Fitur ini ditambahkan di PowerShell 6.0.0.

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

-DisableKeepAlive

Menunjukkan bahwa cmdlet mengatur nilai KeepAlive di header HTTP ke False. Secara default, KeepAlive adalah True. KeepAlive membuat koneksi persisten ke server untuk memfasilitasi permintaan berikutnya.

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

-Form

Mengonversi kamus menjadi multipart/form-data pengiriman. Formulir tidak dapat digunakan dengan Isi. Jika ContentType digunakan, contentType akan diabaikan.

Kunci kamus digunakan sebagai nama bidang formulir. Secara default, nilai formulir dikonversi menjadi nilai string.

Jika nilainya adalah objek System.IO.FileInfo , maka konten file biner dikirimkan. Nama file dikirimkan sebagai properti nama file. Jenis MIME diatur sebagai application/octet-stream. Get-Item dapat digunakan untuk menyederhanakan penyediaan objek System.IO.FileInfo .

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

Jika nilainya adalah jenis koleksi, array atau Daftar tersebut, bidang untuk dikirimkan beberapa kali. Nilai daftar diperlakukan sebagai string secara default. Jika nilainya adalah objek System.IO.FileInfo , maka konten file biner dikirimkan. Koleksi berlapis tidak didukung.

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

Dalam contoh tags di atas bidang disediakan tiga kali dalam formulir, sekali untuk masing-masing Vacation, Italy, dan 2017. Bidang pictures juga dikirimkan sekali untuk setiap file di 2017-Italy folder. Konten biner file dalam folder tersebut dikirimkan sebagai nilai.

Fitur ini ditambahkan di PowerShell 6.1.0.

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

-Headers

Menentukan header permintaan web. Masukkan tabel hash atau kamus.

Header terkait konten, seperti Content-Type ditimpa ketika objek MultipartFormDataContent disediakan untuk Isi.

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

-InFile

Mendapatkan konten permintaan web dari file. Masukkan jalur dan nama file. Jika Anda menghilangkan jalur, defaultnya adalah lokasi saat ini.

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

-MaximumRedirection

Menentukan berapa kali PowerShell mengalihkan koneksi ke Pengidentifikasi Sumber Daya Seragam (URI) alternatif sebelum koneksi gagal. Nilai defaultnya adalah 5. Nilai 0 (nol) mencegah semua pengalihan.

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

-MaximumRetryCount

Menentukan berapa kali PowerShell mencoba kembali koneksi saat kode kegagalan antara 400 dan 599, inklusif atau 304 diterima. Lihat juga parameter RetryIntervalSec untuk menentukan jumlah percobaan ulang.

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

-Method

Menentukan metode yang digunakan untuk permintaan web. Nilai yang dapat diterima untuk parameter ini adalah:

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

Parameter CustomMethod dapat digunakan untuk Metode Permintaan yang tidak tercantum di atas.

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

Menunjukkan bahwa cmdlet tidak boleh menggunakan proksi untuk mencapai tujuan. Saat Anda perlu melewati proksi yang dikonfigurasi di lingkungan, gunakan sakelar ini. Fitur ini ditambahkan di PowerShell 6.0.0.

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

-OutFile

Menentukan file output tempat cmdlet ini menyimpan isi respons. Masukkan jalur dan nama file. Jika Anda menghilangkan jalur, defaultnya adalah lokasi saat ini. Nama ini diperlakukan sebagai jalur harfiah. Nama yang berisi tanda kurung siku ([]) harus diapit dalam tanda kutip tunggal (').

Secara default, Invoke-WebRequest mengembalikan hasil ke alur. Untuk mengirim hasil ke file dan ke alur, gunakan parameter Passthru .

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

-PassThru

Menunjukkan bahwa cmdlet mengembalikan hasilnya, selain menulisnya ke file. Parameter ini hanya valid ketika parameter OutFile juga digunakan dalam perintah .

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

-PreserveAuthorizationOnRedirect

Menunjukkan cmdlet harus mempertahankan Authorization header, saat ada, di seluruh pengalihan.

Secara default, cmdlet menghapus Authorization header sebelum mengalihkan. Menentukan parameter ini menonaktifkan logika ini untuk kasus di mana header perlu dikirim ke lokasi pengalihan.

Fitur ini ditambahkan di PowerShell 6.0.0.

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

-Proxy

Menentukan server proksi untuk permintaan, daripada menyambungkan langsung ke sumber daya internet. Masukkan URI server proksi jaringan.

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

-ProxyCredential

Menentukan akun pengguna yang memiliki izin untuk menggunakan server proksi yang ditentukan oleh parameter Proksi . Defaultnya adalah pengguna saat ini.

Ketik nama pengguna, seperti User01 atau Domain01\User01, atau masukkan objek PSCredential , seperti yang dihasilkan oleh Get-Credential cmdlet.

Parameter ini hanya valid ketika parameter Proksi juga digunakan dalam perintah . Anda tidak dapat menggunakan parameter ProxyCredential dan ProxyUseDefaultCredentials dalam perintah yang sama.

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

-ProxyUseDefaultCredentials

Menunjukkan bahwa cmdlet menggunakan kredensial pengguna saat ini untuk mengakses server proksi yang ditentukan oleh parameter Proksi .

Parameter ini hanya valid ketika parameter Proksi juga digunakan dalam perintah . Anda tidak dapat menggunakan parameter ProxyCredential dan ProxyUseDefaultCredentials dalam perintah yang sama.

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

-Resume

Melakukan upaya terbaik untuk melanjutkan pengunduhan file parsial. Resume memerlukan OutFile.

Lanjutkan hanya beroperasi pada ukuran file lokal dan file jarak jauh dan tidak melakukan validasi lain bahwa file lokal dan file jarak jauh sama.

Jika ukuran file lokal lebih kecil dari ukuran file jarak jauh, maka cmdlet mencoba melanjutkan pengunduhan file dan menambahkan byte yang tersisa ke akhir file.

Jika ukuran file lokal sama dengan ukuran file jarak jauh, maka tidak ada tindakan yang diambil dan cmdlet mengasumsikan unduhan sudah selesai.

Jika ukuran file lokal lebih besar dari ukuran file jarak jauh, maka file lokal ditimpa dan seluruh file jarak jauh diunduh ulang. Perilaku ini sama dengan menggunakan OutFile tanpa Resume.

Jika server jarak jauh tidak mendukung pengunduhan dilanjutkan, maka file lokal ditimpa dan seluruh file jarak jauh diunduh ulang. Perilaku ini sama dengan menggunakan OutFile tanpa Resume.

Jika file lokal tidak ada, maka file lokal dibuat dan seluruh file jarak jauh diunduh. Perilaku ini sama dengan menggunakan OutFile tanpa Resume.

Fitur ini ditambahkan di PowerShell 6.1.0.

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

-RetryIntervalSec

Menentukan interval antara percobaan ulang untuk koneksi ketika kode kegagalan antara 400 dan 599, inklusif atau 304 diterima. Lihat juga parameter MaximumRetryCount untuk menentukan jumlah percobaan ulang. Nilai harus antara 1 dan [int]::MaxValue.

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

-SessionVariable

Menentukan variabel yang cmdlet ini membuat sesi permintaan web dan menyimpannya dalam nilai . Masukkan nama variabel tanpa simbol tanda dolar ($).

Saat Anda menentukan variabel sesi, Invoke-WebRequest membuat objek sesi permintaan web dan menetapkannya ke variabel dengan nama yang ditentukan dalam sesi PowerShell Anda. Anda dapat menggunakan variabel dalam sesi Anda segera setelah perintah selesai.

Sebelum PowerShell 7.4, sesi permintaan web bukan koneksi persisten. Ini adalah objek yang berisi informasi tentang koneksi dan permintaan, termasuk cookie, kredensial, nilai pengalihan maksimum, dan string agen pengguna. Anda dapat menggunakannya untuk berbagi status dan data di antara permintaan web.

Dimulai di PowerShell 7.4, sesi permintaan web tetap ada selama properti sesi tidak ditimpa dalam permintaan berikutnya. Ketika sudah, cmdlet membuat ulang sesi dengan nilai baru. Sesi persisten mengurangi overhead untuk permintaan berulang, membuatnya jauh lebih cepat.

Untuk menggunakan sesi permintaan web dalam permintaan web berikutnya, tentukan variabel sesi dalam nilai parameter WebSession . PowerShell menggunakan data dalam objek sesi permintaan web saat membuat koneksi baru. Untuk mengambil alih nilai dalam sesi permintaan web, gunakan parameter cmdlet, seperti UserAgent atau Credential. Nilai parameter lebih diutamakan daripada nilai dalam sesi permintaan web.

Anda tidak dapat menggunakan parameter SessionVariable dan WebSession dalam perintah yang sama.

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

-SkipCertificateCheck

Melewati pemeriksaan validasi sertifikat. Ini termasuk semua validasi seperti kedaluwarsa, pencabutan, otoritas akar tepercaya, dll.

Peringatan

Menggunakan parameter ini tidak aman dan tidak disarankan. Sakelar ini hanya dimaksudkan untuk digunakan terhadap host yang diketahui menggunakan sertifikat yang ditandatangani sendiri untuk tujuan pengujian. Gunakan dengan risiko Anda sendiri.

Fitur ini ditambahkan di PowerShell 6.0.0.

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

-SkipHeaderValidation

Menunjukkan cmdlet harus menambahkan header ke permintaan tanpa validasi.

Sakelar ini harus digunakan untuk situs yang memerlukan nilai header yang tidak sesuai dengan standar. Menentukan sakelar ini menonaktifkan validasi untuk memungkinkan nilai diteruskan tidak dicentang. Ketika ditentukan, semua header ditambahkan tanpa validasi.

Sakelar ini menonaktifkan validasi untuk nilai yang diteruskan ke parameter ContentType, Headers , dan UserAgent .

Fitur ini ditambahkan di PowerShell 6.0.0.

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

-SkipHttpErrorCheck

Parameter ini menyebabkan cmdlet mengabaikan status kesalahan HTTP dan terus memproses respons. Respons kesalahan ditulis ke alur seolah-olah berhasil.

Parameter ini diperkenalkan di PowerShell 7.

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

-SslProtocol

Mengatur protokol SSL/TLS yang diizinkan untuk permintaan web. Secara default semua, protokol SSL/TLS yang didukung oleh sistem diizinkan. SslProtocol memungkinkan pembatasan pada protokol tertentu untuk tujuan kepatuhan.

Nilai-nilai ini didefinisikan sebagai enumerasi berbasis bendera. Anda dapat menggabungkan beberapa nilai bersama-sama untuk mengatur beberapa bendera menggunakan parameter ini. Nilai dapat diteruskan ke parameter SslProtocol sebagai array nilai atau sebagai string yang dipisahkan koma dari nilai tersebut. Cmdlet menggabungkan nilai menggunakan operasi biner-OR. Meneruskan nilai sebagai array adalah opsi paling sederhana dan juga memungkinkan Anda menggunakan penyelesaian tab pada nilai. Anda mungkin tidak dapat menentukan beberapa opsi di semua platform.

Catatan

Pada platform non-Windows mungkin tidak dimungkinkan untuk menyediakan Tls atau Tls12 sebagai opsi. Dukungan untuk Tls13 tidak tersedia di semua sistem operasi dan perlu diverifikasi berdasarkan sistem operasi.

Fitur ini ditambahkan di PowerShell 6.0.0 dan dukungan untuk Tls13 ditambahkan di PowerShell 7.1.

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

-TimeoutSec

Menentukan berapa lama permintaan dapat tertunda sebelum waktu habis. Masukkan nilai dalam detik. Nilai default, 0, menentukan batas waktu yang tidak terbatas.

Kueri Sistem Nama Domain (DNS) bisa memakan waktu hingga 15 detik untuk kembali atau kehabisan waktu. Jika permintaan Anda berisi nama host yang memerlukan resolusi, dan Anda mengatur TimeoutSec ke nilai yang lebih besar dari nol, tetapi kurang dari 15 detik, dibutuhkan waktu 15 detik atau lebih sebelum WebException dilemparkan, dan waktu permintaan Anda habis.

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

-Token

Token OAuth atau Pembawa untuk disertakan dalam permintaan. Token diperlukan oleh opsi Autentikasi tertentu. Ini tidak dapat digunakan secara independen.

Token mengambil yang SecureString berisi token. Untuk menyediakan token secara manual, gunakan yang berikut:

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

Parameter ini diperkenalkan di PowerShell 6.0.

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

-TransferEncoding

Menentukan nilai untuk header respons HTTP pengodean transfer. Nilai yang dapat diterima untuk parameter ini adalah:

  • Chunked
  • Compress
  • Deflate
  • GZip
  • Identity
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

Menentukan Pengidentifikasi Sumber Daya Seragam (URI) sumber daya internet tempat permintaan web dikirim. Masukkan URI. Parameter ini hanya mendukung HTTP atau HTTPS.

Parameter ini diperlukan. Nama parameter Uri bersifat opsional.

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

-UseBasicParsing

Parameter ini tidak digunakan lagi. Dimulai dengan PowerShell 6.0.0, semua permintaan Web hanya menggunakan penguraian dasar. Parameter ini disertakan hanya untuk kompatibilitas mundur dan penggunaan apa pun tidak berpengaruh pada pengoperasian cmdlet.

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

-UseDefaultCredentials

Menunjukkan bahwa cmdlet menggunakan kredensial pengguna saat ini untuk mengirim permintaan web. Ini tidak dapat digunakan dengan Autentikasi atau Kredensial dan mungkin tidak didukung di semua platform.

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

-UserAgent

Menentukan string agen pengguna untuk permintaan web.

Agen pengguna default mirip Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 dengan sedikit variasi untuk setiap sistem operasi dan platform.

Untuk menguji situs web dengan string agen pengguna standar yang digunakan oleh sebagian besar browser internet, gunakan properti kelas PSUserAgent , seperti Chrome, FireFox, InternetExplorer, Opera, dan Safari.

Misalnya, perintah berikut menggunakan string agen pengguna untuk Internet Explorer: Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)

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

-WebSession

Menentukan sesi permintaan web. Masukkan nama variabel, termasuk tanda dolar ($).

Untuk mengambil alih nilai dalam sesi permintaan web, gunakan parameter cmdlet, seperti UserAgent atau Credential. Nilai parameter lebih diutamakan daripada nilai dalam sesi permintaan web. Header terkait konten, seperti Content-Type, juga ditimpa ketika objek MultipartFormDataContent disediakan untuk Isi.

Tidak seperti sesi jarak jauh, sesi permintaan web bukan koneksi persisten. Ini adalah objek yang berisi informasi tentang koneksi dan permintaan, termasuk cookie, kredensial, nilai pengalihan maksimum, dan string agen pengguna. Anda dapat menggunakannya untuk berbagi status dan data di antara permintaan web.

Untuk membuat sesi permintaan web, masukkan nama variabel, tanpa tanda dolar, dalam nilai parameter SessionVariable dari perintah Invoke-WebRequest . Invoke-WebRequest membuat sesi dan menyimpannya dalam variabel. Dalam perintah berikutnya, gunakan variabel sebagai nilai parameter WebSession .

Anda tidak dapat menggunakan parameter SessionVariable dan WebSession dalam perintah yang sama.

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

Input

Object

Anda dapat menyalurkan isi permintaan web ke cmdlet ini.

Output

BasicHtmlWebResponseObject

Cmdlet ini mengembalikan objek respons yang mewakili hasil permintaan web.

Catatan

PowerShell menyertakan alias berikut untuk Invoke-WebRequest:

  • Semua platform:
    • iwr

Dimulai dengan PowerShell 6.0.0 Invoke-WebRequest hanya mendukung penguraian dasar.

Untuk informasi selengkapnya, lihat BasicHtmlWebResponseObject.

Karena perubahan dalam .NET Core 3.1, PowerShell 7.0 dan yang lebih tinggi menggunakan properti HttpClient.DefaultProxy untuk menentukan konfigurasi proksi.

Nilai properti ini ditentukan oleh platform Anda:

  • Untuk Windows: Membaca konfigurasi proksi dari variabel lingkungan. Jika variabel tersebut tidak ditentukan, properti berasal dari pengaturan proksi pengguna.
  • Untuk macOS: Membaca konfigurasi proksi dari variabel lingkungan. Jika variabel tersebut tidak ditentukan, properti berasal dari pengaturan proksi sistem.
  • Untuk Linux: Membaca konfigurasi proksi dari variabel lingkungan. Jika variabel tersebut tidak ditentukan, properti menginisialisasi instans yang tidak dikonfigurasi yang melewati semua alamat.

Variabel lingkungan yang digunakan untuk DefaultProxy inisialisasi pada platform berbasis Windows dan Unix adalah:

  • HTTP_PROXY: nama host atau alamat IP server proksi yang digunakan pada permintaan HTTP.
  • HTTPS_PROXY: nama host atau alamat IP server proksi yang digunakan pada permintaan HTTPS.
  • ALL_PROXY: nama host atau alamat IP server proksi yang digunakan pada permintaan HTTP dan HTTPS jika HTTP_PROXY atau HTTPS_PROXY tidak ditentukan.
  • NO_PROXY: daftar nama host yang dipisahkan koma yang harus dikecualikan dari proksi.