Invoke-WebRequest
인터넷의 웹 페이지에서 콘텐츠를 가져옵니다.
구문
StandardMethod (기본값)
Invoke-WebRequest
[-Uri] <Uri>
[-UseBasicParsing]
[-HttpVersion <Version>]
[-WebSession <WebRequestSession>]
[-SessionVariable <String>]
[-AllowUnencryptedAuthentication]
[-Authentication <WebAuthenticationType>]
[-Credential <PSCredential>]
[-UseDefaultCredentials]
[-CertificateThumbprint <String>]
[-Certificate <X509Certificate>]
[-SkipCertificateCheck]
[-SslProtocol <WebSslProtocol>]
[-Token <SecureString>]
[-UserAgent <String>]
[-DisableKeepAlive]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-Method <WebRequestMethod>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
StandardMethodNoProxy
Invoke-WebRequest
[-Uri] <Uri>
[-UseBasicParsing]
[-HttpVersion <Version>]
[-WebSession <WebRequestSession>]
[-SessionVariable <String>]
[-AllowUnencryptedAuthentication]
[-Authentication <WebAuthenticationType>]
[-Credential <PSCredential>]
[-UseDefaultCredentials]
[-CertificateThumbprint <String>]
[-Certificate <X509Certificate>]
[-SkipCertificateCheck]
[-SslProtocol <WebSslProtocol>]
[-Token <SecureString>]
[-UserAgent <String>]
[-DisableKeepAlive]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-Method <WebRequestMethod>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-NoProxy]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
CustomMethod
Invoke-WebRequest
[-Uri] <Uri>
-CustomMethod <String>
[-UseBasicParsing]
[-HttpVersion <Version>]
[-WebSession <WebRequestSession>]
[-SessionVariable <String>]
[-AllowUnencryptedAuthentication]
[-Authentication <WebAuthenticationType>]
[-Credential <PSCredential>]
[-UseDefaultCredentials]
[-CertificateThumbprint <String>]
[-Certificate <X509Certificate>]
[-SkipCertificateCheck]
[-SslProtocol <WebSslProtocol>]
[-Token <SecureString>]
[-UserAgent <String>]
[-DisableKeepAlive]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-Proxy <Uri>]
[-ProxyCredential <PSCredential>]
[-ProxyUseDefaultCredentials]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
CustomMethodNoProxy
Invoke-WebRequest
[-Uri] <Uri>
-CustomMethod <String>
[-UseBasicParsing]
[-HttpVersion <Version>]
[-WebSession <WebRequestSession>]
[-SessionVariable <String>]
[-AllowUnencryptedAuthentication]
[-Authentication <WebAuthenticationType>]
[-Credential <PSCredential>]
[-UseDefaultCredentials]
[-CertificateThumbprint <String>]
[-Certificate <X509Certificate>]
[-SkipCertificateCheck]
[-SslProtocol <WebSslProtocol>]
[-Token <SecureString>]
[-UserAgent <String>]
[-DisableKeepAlive]
[-ConnectionTimeoutSeconds <Int32>]
[-OperationTimeoutSeconds <Int32>]
[-Headers <IDictionary>]
[-SkipHeaderValidation]
[-AllowInsecureRedirect]
[-MaximumRedirection <Int32>]
[-MaximumRetryCount <Int32>]
[-PreserveAuthorizationOnRedirect]
[-RetryIntervalSec <Int32>]
[-PreserveHttpMethodOnRedirect]
[-UnixSocket <UnixDomainSocketEndPoint>]
[-NoProxy]
[-Body <Object>]
[-Form <IDictionary>]
[-ContentType <String>]
[-TransferEncoding <String>]
[-InFile <String>]
[-OutFile <String>]
[-PassThru]
[-Resume]
[-SkipHttpErrorCheck]
[<CommonParameters>]
Description
Invoke-WebRequest cmdlet은 웹 페이지 또는 웹 서비스에 HTTP 및 HTTPS 요청을 보냅니다. 응답을 구문 분석하고 링크, 이미지 및 기타 중요한 HTML 요소 컬렉션을 반환합니다.
이 cmdlet은 PowerShell 3.0에서 도입되었습니다.
PowerShell 7.0부터 Invoke-WebRequest 환경 변수로 정의된 프록시 구성을 지원합니다. 이 문서의 노트 섹션을 참조하세요.
중요합니다
이 문서의 예제는 contoso.com 도메인의 호스트를 참조합니다. 예를 들어 Microsoft에서 사용하는 가상의 도메인입니다. 이 예제는 cmdlet을 사용하는 방법을 보여 줍니다.
그러나 contoso.com 사이트가 없으므로 예제가 작동하지 않습니다. 사용자 환경의 호스트에 예제를 조정합니다.
PowerShell 7.4부터 요청에 대한 문자 인코딩은 기본적으로 ASCII 대신 UTF-8로 설정됩니다. 다른 인코딩이 필요한 경우 charset 헤더에서 Content-Type 특성을 설정해야 합니다.
예제
예제 1: 웹 요청 보내기
이 예제에서는 Invoke-WebRequest cmdlet을 사용하여 웹 요청을 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
첫 번째 명령은 요청을 실행하고 응답을 $Response 변수에 저장합니다.
두 번째 명령은 Name 속성이 같은 "* Value" 가져옵니다. 필터링된 결과는 Select-Object 파이프되어 이름 및 값 속성을 선택합니다.
예제 2: 상태 저장 웹 서비스 사용
이 예제에서는 상태 저장 웹 서비스에서 Invoke-WebRequest cmdlet을 사용하는 방법을 보여줍니다.
$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
Invoke-WebRequest 첫 번째 호출은 로그인 요청을 보냅니다. 이 명령은 Session 매개 변수 값에 대한 값을 지정합니다. 명령이 완료되면 $LoginResponse 변수에 BasicHtmlWebResponseObject 포함되고 $Session 변수에는 WebRequestSession 개체가 포함됩니다. 그러면 사용자가 사이트에 기록됩니다.
Invoke-WebRequest 대한 두 번째 호출은 사용자의 프로필을 가져오며, 이를 위해서는 사용자가 사이트에 로그인해야 합니다.
$Session 변수에 저장된 세션 데이터는 로그인 중에 만든 사이트에 세션 쿠키를 제공합니다.
예제 3: 웹 페이지에서 링크 가져오기
이 예제에서는 웹 페이지의 링크를 가져옵니다.
Invoke-WebRequest cmdlet을 사용하여 웹 페이지 콘텐츠를 가져옵니다. 그런 다음 반환하는 BasicHtmlWebResponseObjectInvoke-WebRequest 속성과 각 링크의 Href 속성을 사용합니다.
(Invoke-WebRequest -Uri "https://aka.ms/pscore6-docs").Links.Href
예제 4: 요청된 페이지에 정의된 인코딩을 사용하여 파일에 응답 콘텐츠 쓰기
이 예제에서는 Invoke-WebRequest cmdlet을 사용하여 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()
}
첫 번째 명령은 페이지를 검색하고 응답 개체를 $Response 변수에 저장합니다.
두 번째 명령은 응답 콘텐츠를 파일에 쓰는 데 사용할 StreamWriter 만듭니다. 응답 개체의 인코딩 속성은 파일에 대한 인코딩을 설정하는 데 사용됩니다.
마지막 몇 명령은 Content 속성을 파일에 쓴 다음 StreamWriter삭제합니다.
웹 요청이 텍스트 콘텐츠를 반환하지 않는 경우 인코딩 속성은 null입니다.
예제 5: 다중 파트/양식 데이터 파일 제출
이 예제에서는 Invoke-WebRequest cmdlet을 사용하여 파일을 multipart/form-data 제출로 업로드합니다. 파일 C:\document.txtdocumentContent-Typetext/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'
예제 6: 간소화된 다중 파트/Form-Data 제출
일부 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-WebRequest -Uri $Uri -Method Post -Form $Form
프로필 폼에는 firstName, lastName, email, avatar, birthday및 hobbies필드가 필요합니다. API는 사용자 프로필 그림에 대한 이미지가 avatar 필드에 제공될 것으로 예상합니다. 또한 API는 동일한 형식으로 제출될 여러 hobbies 항목을 허용합니다.
$Form HashTable을 만들 때 키 이름은 양식 필드 이름으로 사용됩니다. 기본적으로 HashTable의 값은 문자열로 변환됩니다.
System.IO.FileInfo 값이 있으면 파일 내용이 제출됩니다. 배열 또는 목록과 같은 컬렉션이 있는 경우 양식 필드가 여러 번 제출됩니다.
Get-Item 키에 avatar 사용하면 FileInfo 개체가 값으로 설정됩니다. 그 결과 jdoe.png 대한 이미지 데이터가 제출됩니다.
hobbies 키에 목록을 제공하면 각 목록 항목에 대해 hobbies 필드가 제출에 한 번 표시됩니다.
예제 7: Invoke-WebRequest 성공하지 않은 메시지 catch
Invoke-WebRequest 성공하지 못한 HTTP 메시지(404, 500 등)가 발생하면 출력을 반환하지 않고 종료 오류를 throw합니다. 오류를 catch하고 StatusCode 보려면 try/catch 블록에 실행을 묶을 수 있습니다.
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
종료 오류는 catch 개체에서 StatusCode 검색하는 블록에 의해 catch됩니다.
예제 8: 동시에 여러 파일 다운로드
Invoke-WebRequest cmdlet은 한 번에 하나의 파일만 다운로드할 수 있습니다. 다음 예제에서는 Start-ThreadJob 사용하여 여러 스레드 작업을 만들어 동시에 여러 파일을 다운로드합니다.
$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
}
예제 9: 헤더 유효성 검사 건너뛰기
기본적으로 Invoke-WebRequest cmdlet은 표준 정의 값 형식이 있는 잘 알려진 헤더의 값의 유효성을 검사합니다. 다음 예제에서는 이 유효성 검사에서 오류를 발생시키는 방법과 SkipHeaderValidation 매개 변수를 사용하여 잘못된 형식의 값을 허용한 엔드포인트에 대한 값의 유효성을 검사하지 않도록 하는 방법을 보여 줍니다.
$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 문제 해결을 위한 웹 요청 및 응답에 대한 정보를 반환하는 서비스입니다.
$Uri 변수는 요청의 헤더를 응답의 콘텐츠로 반환하는 서비스의 /headers 엔드포인트에 할당됩니다.
If-Match 요청 헤더는 RFC-7232 섹션 3.1 정의되며 해당 헤더의 값을 주변 따옴표로 정의해야 합니다.
$InvalidHeaders 변수에는 If-Match대신 12345 정의되므로 "12345" 값이 유효하지 않은 해시 테이블이 할당됩니다.
잘못된 헤더를 사용하여 Invoke-WebRequest 호출하면 형식이 지정된 값이 잘못되었다는 오류 보고가 반환됩니다. 요청이 엔드포인트로 전송되지 않습니다.
Invoke-WebRequest 매개 변수를 사용하여 호출하면 유효성 검사 오류가 무시되고 요청이 엔드포인트로 전송됩니다. 엔드포인트는 비준수 헤더 값을 허용하므로 cmdlet은 오류 없이 응답 개체를 반환합니다.
예제 10: HTTP 2.0을 사용하여 요청 보내기
이 예제에서는 HTTP 2.0 프로토콜을 사용하여 웹 페이지의 링크를 가져옵니다.
Invoke-WebRequest cmdlet을 사용하여 웹 페이지 콘텐츠를 가져옵니다. 그런 다음 반환하는 BasicHtmlWebResponseObjectInvoke-WebRequest 속성과 각 링크의 Href 속성을 사용합니다.
(Invoke-WebRequest -Uri 'https://aka.ms/pscore6-docs' -HttpVersion 2.0).Links.Href
예제 11: Unix 소켓 애플리케이션에 요청 보내기
Docker와 같은 일부 애플리케이션은 통신을 위해 Unix 소켓을 노출합니다. 이 예제에서는 Docker API를 사용하여 Docker 이미지 목록을 쿼리합니다. 이 cmdlet은 Unix 소켓을 사용하여 Docker 디먼에 연결합니다.
Invoke-WebRequest -Uri "http://localhost/v1.40/images/json/" -UnixSocket "/var/run/docker.sock"
매개 변수
-AllowInsecureRedirect
HTTPS에서 HTTP로 리디렉션할 수 있습니다. 기본적으로 HTTPS에서 HTTP로 리디렉션되는 요청은 오류가 발생하며, 암호화되지 않은 연결을 통해 의도치 않게 일반 텍스트로 통신하지 못하도록 요청이 중단됩니다. 사용자 고유의 위험에서 이 동작을 재정의하려면 AllowInsecureRedirect 매개 변수를 사용합니다.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-AllowUnencryptedAuthentication
암호화되지 않은 연결을 통해 자격 증명 및 비밀을 보낼 수 있습니다. 기본적으로 시작하지 않는 Uri자격 증명 또는 https:// 옵션을 제공하면 오류가 발생하며, 암호화되지 않은 연결을 통해 실수로 일반 텍스트로 비밀을 전달하지 못하도록 요청이 중단됩니다. 사용자 고유의 위험에서 이 동작을 재정의하려면 AllowUnencryptedAuthentication 매개 변수를 제공합니다.
경고
이 매개 변수를 사용하는 것은 안전하지 않으며 권장되지 않습니다. 암호화된 연결을 제공할 수 없는 레거시 시스템과의 호환성을 위해서만 제공됩니다. 사용자 고유의 위험에 사용합니다.
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Authentication
요청에 사용할 명시적 인증 유형을 지정합니다. 기본값은 None(없음)입니다. Authentication 매개 변수는 UseDefaultCredentials 매개 변수와 함께 사용할 수 없습니다.
사용 가능한 인증 옵션:
-
None: 인증 제공되지 않는 경우 기본 옵션입니다. 명시적 인증은 사용되지 않습니다. -
Basic: 자격 증명필요합니다. 자격 증명은Authorization: Basic형식의 RFC 7617 기본 인증base64(user:password)헤더로 전송됩니다. -
Bearer: 토큰 매개 변수가 필요합니다. 제공된 토큰을 사용하여 RFC 6750Authorization: Bearer헤더를 보냅니다. -
OAuth: 토큰 매개 변수가 필요합니다. 제공된 토큰을 사용하여 RFC 6750Authorization: Bearer헤더를 보냅니다.
인증 을(를) 제공할 경우, 이는 Authorization 에서 제공된 헤더나 WebSession에 포함된 헤더를 우선합니다.
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | WebAuthenticationType |
| Default value: | None |
| 허용되는 값: | None, Basic, Bearer, OAuth |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Body
요청 본문을 지정합니다. 본문은 헤더 뒤에 있는 요청의 내용입니다.
본문 값을 Invoke-WebRequest으로 전달할 수도 있습니다.
Body 매개 변수를 사용하여 쿼리 매개 변수 목록을 지정하거나 응답 내용을 지정할 수 있습니다. 쿼리 매개 변수의 경우 cmdlet은 System.Net.WebUtility.UrlEncode 메서드 메서드를 사용하여 키-값 쌍을 인코딩합니다. URL에 대한 문자열 인코딩에 대한 자세한 내용은 urlEncode() 메서드 참조 참조하세요.
입력이 POST 요청이고 본문이 String경우 첫 번째 등호(=)의 왼쪽 값은 양식 데이터의 키로 설정되고 나머지 텍스트는 값으로 설정됩니다. 여러 키를 지정하려면 본문을 위해 해시 테이블과 같은 IDictionary 개체를 사용합니다.
입력이 GET 요청이고 본문이 IDictionary(일반적으로 해시 테이블)인 경우 본문은 쿼리 매개 변수로 URI에 추가됩니다. 다른 요청 형식(예: PATCH)의 경우 본문은 URL로 인코딩된 값을 사용하여 표준 name=value 형식의 요청 본문 값으로 설정됩니다.
입력이 System.Xml.XmlNode 개체이고 XML 선언이 인코딩을 지정하는 경우 ContentType 매개 변수로 재정의되지 않는 한 해당 인코딩이 요청의 데이터에 사용됩니다.
Body 매개 변수도 System.Net.Http.MultipartFormDataContent 개체를 허용합니다. 이렇게 하면 요청을 multipart/form-data 수 있습니다.
Body대해 MultipartFormDataContent 개체를 제공하면 ContentType, Headers또는 WebSession 매개 변수에 제공된 모든 콘텐츠 관련 헤더가 MultipartFormDataContent 개체의 콘텐츠 헤더에 의해 재정의됩니다. 이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | Object |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | True |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Certificate
보안 웹 요청에 사용되는 클라이언트 인증서를 지정합니다. 인증서 또는 인증서를 가져오는 명령 또는 식이 포함된 변수를 입력합니다.
인증서를 찾으려면 Get-PfxCertificate 사용하거나 인증서(Get-ChildItem) 드라이브에서 Cert: cmdlet을 사용합니다. 인증서가 유효하지 않거나 권한이 충분하지 않으면 명령이 실패합니다.
매개 변수 속성
| 형식: | X509Certificate |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-CertificateThumbprint
요청을 보낼 수 있는 권한이 있는 사용자 계정의 디지털 공개 키 인증서(X509)를 지정합니다. 인증서의 인증서 지문을 입력합니다.
인증서는 클라이언트 인증서 기반 인증에 사용됩니다. 인증서는 도메인 계정이 아닌 로컬 사용자 계정에만 매핑할 수 있습니다.
인증서 지문을 보려면 Get-Item 또는 Get-ChildItem 명령을 사용하여 Cert:\CurrentUser\My인증서를 찾습니다.
비고
이 기능은 Windows OS 플랫폼에서만 지원됩니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-ConnectionTimeoutSeconds
요청이 시간 초과되기 전에 보류할 수 있는 기간을 지정합니다. 값을 초 단위로 입력합니다. 기본값 0은 무기한 제한 시간을 지정합니다.
DNS(도메인 이름 시스템) 조회는 반환되거나 시간 초과가 발생하는 데 최대 15초가 걸릴 수 있습니다. 요청에 해석이 필요한 호스트 이름이 포함되어 있고, ConnectionTimeoutSeconds를 0보다 크고 15초 미만으로 설정한 경우, WebException이 발생하고 요청이 시간 초과되기까지 15초 이상 걸릴 수 있습니다.
이 매개 변수는 PowerShell 7.4의 TimeoutSec 매개 변수를 대체했습니다. ConnectionTimeoutSeconds대해 TimeoutSec을 별칭으로 사용할 수 있습니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
| 별칭: | TimeoutSec |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-ContentType
웹 요청의 콘텐츠 형식을 지정합니다.
ContentType 값에 인코딩 형식(charset)이 포함된 경우 cmdlet은 해당 형식을 사용하여 웹 요청의 본문을 인코딩합니다.
ContentType 인코딩 형식을 지정하지 않으면 기본 인코딩 형식이 대신 사용됩니다. 인코딩 형식이 있는 ContentType의 예로는 text/plain; charset=iso-8859-5가 있으며, 이는 라틴어/키릴 자모 알파벳을 지정합니다.
매개 변수를 생략하면 사용하는 HTTP 메서드에 따라 콘텐츠 형식이 다를 수 있습니다.
- POST 메서드의 경우 콘텐츠 형식이
application/x-www-form-urlencoded - PUT 메서드의 경우 콘텐츠 형식이
application/json - 다른 메서드의 경우 콘텐츠 형식이 요청에 지정되지 않습니다.
InFile 매개 변수를 사용하여 파일을 업로드하는 경우 콘텐츠 형식을 설정해야 합니다.
일반적으로 형식은 application/octet-stream합니다. 그러나 엔드포인트의 요구 사항에 따라 콘텐츠 형식을 설정해야 합니다.
본문MultipartFormDataContent 개체인 경우 ContentType 재정의됩니다.
PowerShell 7.4부터 이 매개 변수와 Headers 매개 변수를 모두 사용하여 Content-Type 헤더를 정의하는 경우 ContentType 매개 변수에 지정된 값이 사용됩니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Credential
요청을 보낼 수 있는 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
User01 또는 Domain01\User01같은 사용자 이름을 입력하거나 cmdlet에서 생성된 Get-Credential 개체를 입력합니다.
자격 증명 단독으로 또는 특정 인증 매개 변수 옵션과 함께 사용할 수 있습니다. 단독으로 사용하는 경우 원격 서버가 인증 챌린지 요청을 보내는 경우에만 원격 서버에 자격 증명을 제공합니다. 인증 옵션과 함께 사용하면 자격 증명이 명시적으로 전송됩니다.
자격 증명은 PSCredential 개체에 저장되고 암호는 SecureString저장됩니다.
비고
SecureString 데이터 보호에 대한 자세한 내용은 SecureString이 얼마나 안전한가요?.
매개 변수 속성
| 형식: | PSCredential |
| Default value: | Current user |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-CustomMethod
웹 요청에 사용되는 사용자 지정 메서드를 지정합니다. 엔드포인트에 필요한 요청 메서드가 메서드사용할 수 있는 옵션이 아닌 경우 사용할 수 있습니다. 메서드 및 CustomMethod 함께 사용할 수 없습니다.
이 예제에서는 API에 TEST HTTP 요청을 만듭니다.
Invoke-WebRequest -Uri 'https://api.contoso.com/widget/' -CustomMethod 'TEST'
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
| 별칭: | 센티미터 |
매개 변수 집합
CustomMethod
| Position: | Named |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CustomMethodNoProxy
| Position: | Named |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-DisableKeepAlive
cmdlet이 HTTP 헤더의
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Form
사전을 multipart/form-data 제출로 변환합니다.
양식은 본문과 함께 사용할 수 없습니다.
ContentType 사용하면 무시됩니다.
사전의 키는 양식 필드 이름으로 사용됩니다. 기본적으로 양식 값은 문자열 값으로 변환됩니다.
값이 System.IO.FileInfo 개체이면 이진 파일 내용이 제출됩니다. 파일 이름은 파일 이름 속성으로 제출됩니다. MIME 형식은 application/octet-stream로 설정됩니다.
Get-Item 사용하여 System.IO.FileInfo 개체 제공을 간소화할 수 있습니다.
$Form = @{
resume = Get-Item 'C:\Users\jdoe\Documents\John Doe.pdf'
}
값이 컬렉션 형식(예: 배열 또는 목록)인 경우 for 필드는 여러 번 제출됩니다. 목록의 값은 기본적으로 문자열로 처리됩니다. 값이 System.IO.FileInfo 개체이면 이진 파일 내용이 제출됩니다. 중첩된 컬렉션은 지원되지 않습니다.
$Form = @{
tags = 'Vacation', 'Italy', '2017'
pictures = Get-ChildItem 'C:\Users\jdoe\Pictures\2017-Italy\'
}
위의 예제에서 tags 필드는 각 Vacation, Italy및 2017대해 한 번씩 양식에서 세 번 제공됩니다.
pictures 필드는 2017-Italy 폴더의 각 파일에 대해 한 번씩 제출됩니다. 해당 폴더에 있는 파일의 이진 콘텐츠는 값으로 제출됩니다.
이 기능은 PowerShell 6.1.0에 추가되었습니다.
매개 변수 속성
| 형식: | IDictionary |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Headers
웹 요청의 헤더를 지정합니다. 해시 테이블 또는 사전을 입력합니다.
Content-Type 개체가 Body제공되면 같은 콘텐츠 관련 헤더가 재정의됩니다.
PowerShell 7.4부터 이 매개 변수를 사용하여 Content-Type 헤더를 정의하고 ContentType 매개 변수를 사용하는 경우 ContentType 매개 변수에 지정된 값이 사용됩니다.
매개 변수 속성
| 형식: | IDictionary |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-HttpVersion
요청에 사용되는 HTTP 버전을 지정합니다. 기본값은 1.1입니다.
유효한 값은 다음과 같습니다.
- 1.0
- 1.1
- 2.0
- 3.0
매개 변수 속성
| 형식: | Version |
| Default value: | 1.1 |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-InFile
파일에서 웹 요청 본문의 콘텐츠를 가져옵니다. 경로 및 파일 이름을 입력합니다. 경로를 생략하면 기본값은 현재 위치입니다.
요청의 콘텐츠 형식도 설정해야 합니다. 예를 들어 파일을 업로드하려면 콘텐츠 형식을 설정해야 합니다. 일반적으로 형식은 application/octet-stream합니다. 그러나 엔드포인트의 요구 사항에 따라 콘텐츠 형식을 설정해야 합니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-MaximumRedirection
연결이 실패하기 전에 PowerShell이 대체 URI(Uniform Resource Identifier)로 연결을 리디렉션하는 횟수를 지정합니다. 기본값은 5입니다. 값이 0이면 모든 리디렉션이 방지됩니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | 5 |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-MaximumRetryCount
400에서 599 사이의 오류 코드(포함 또는 304)가 수신될 때 PowerShell이 연결을 다시 시도한 횟수를 지정합니다. 또한 재시도 간격을 지정하는 RetryIntervalSec 매개 변수를 참조하세요.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Method
웹 요청에 사용되는 메서드를 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
DefaultDeleteGetHeadMergeOptionsPatchPostPutTrace
CustomMethod 매개 변수는 위에 나열되지 않은 요청 메서드에 사용할 수 있습니다.
매개 변수 속성
| 형식: | WebRequestMethod |
| Default value: | None |
| 허용되는 값: | Default, Get, Head, Post, Put, Delete, Trace, Options, Merge, Patch |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
StandardMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
StandardMethodNoProxy
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-NoProxy
cmdlet이 프록시를 사용하여 대상에 도달하면 안 됨을 나타냅니다. 환경에서 구성된 프록시를 바이패스해야 하는 경우 이 스위치를 사용합니다. 이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
StandardMethodNoProxy
| Position: | Named |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CustomMethodNoProxy
| Position: | Named |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-OperationTimeoutSeconds
이 시간 제한은 스트림 시간 전체가 아니라 스트림 내의 데이터 읽기에 적용됩니다. 기본값 0은 무기한 시간 제한을 지정합니다.
값을 30초로 설정하면 스트림의 데이터 사이에 30초보다 긴 지연이 있으면 요청이 종료됩니다. 다운로드하는 데 몇 분 정도 걸리는 큰 파일은 스트림이 30초 이상 중단되지 않는 한 종료되지 않습니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-OutFile
기본적으로 Invoke-WebRequest 파이프라인에 결과를 반환합니다.
OutFile 매개 변수를 사용하면 결과가 지정된 파일에 저장되고 파이프라인으로 반환되지 않습니다. 경로 및 파일 이름을 입력합니다. 결과를 파일 및 파이프라인으로 보내려면 PassThru 매개 변수를 추가합니다.
경로를 생략하면 기본값은 현재 위치입니다. 이름은 문자 그대로의 경로로 처리됩니다.
대괄호([])를 포함하는 이름은 작은따옴표(')로 묶어야 합니다.
PowerShell 7.4부터 파일 이름 없이 폴더 경로를 지정할 수 있습니다. 이렇게 하면 명령은 리디렉션 후 확인된 URI의 마지막 세그먼트에서 파일 이름을 사용합니다. OutFile폴더 경로를 지정하는 경우 Resume 매개 변수를 사용할 수 없습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-PassThru
cmdlet이 결과를 파일에 쓰는 것 외에 결과를 반환한다는 것을 나타냅니다. 이 매개 변수는 OutFile 매개 변수도 명령에 사용되는 경우에만 유효합니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-PreserveAuthorizationOnRedirect
cmdlet이 리디렉션 간에 Authorization 헤더가 있을 경우 이를 유지해야 함을 나타냅니다.
기본적으로 cmdlet은 리디렉션하기 전에 Authorization 헤더를 제거합니다. 이 매개 변수를 지정하면 헤더를 리디렉션 위치로 보내야 하는 경우 이 논리를 사용하지 않도록 설정합니다.
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-PreserveHttpMethodOnRedirect
cmdlet이 리디렉션에서 요청의 메서드를 유지해야 했음을 나타냅니다.
기본적으로 cmdlet은 리디렉션될 때 메서드를 GET 변경합니다. 이 매개 변수를 지정하면 의도한 메서드를 리디렉션과 함께 사용할 수 있도록 이 논리를 사용하지 않도록 설정합니다.
이 기능은 PowerShell 7.4에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Proxy
인터넷 리소스에 직접 연결하는 대신 요청에 대한 프록시 서버를 지정합니다. 네트워크 프록시 서버의 URI를 입력합니다.
매개 변수 속성
| 형식: | Uri |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
StandardMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CustomMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-ProxyCredential
Proxy 매개 변수로 지정된 프록시 서버를 사용할 수 있는 권한이 있는 사용자 계정을 지정합니다. 기본값은 현재 사용자입니다.
User01 또는 Domain01\User01같은 사용자 이름을 입력하거나 cmdlet에서 생성된 것과 같은 Get-Credential 개체를 입력합니다.
이 매개 변수는 Proxy 매개 변수도 명령에 사용되는 경우에만 유효합니다. 동일한 명령에서 ProxyCredential 및 ProxyUseDefaultCredentials 매개 변수를 사용할 수 없습니다.
매개 변수 속성
| 형식: | PSCredential |
| Default value: | Current user |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
StandardMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CustomMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-ProxyUseDefaultCredentials
cmdlet이 현재 사용자의 자격 증명을 사용하여 Proxy 매개 변수로 지정된 프록시 서버에 액세스하도록 나타냅니다.
이 매개 변수는 Proxy 매개 변수도 명령에 사용되는 경우에만 유효합니다. 동일한 명령에서 ProxyCredential 및 ProxyUseDefaultCredentials 매개 변수를 사용할 수 없습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
StandardMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CustomMethod
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Resume
부분 파일 다운로드를 최대한 노력하여 다시 시작합니다. 다시 시작 OutFile 필요합니다.
다시 시작 로컬 파일 및 원격 파일의 크기에서만 작동하며 로컬 파일과 원격 파일이 동일한지 다른 유효성 검사를 수행하지 않습니다.
로컬 파일 크기가 원격 파일 크기보다 작은 경우 cmdlet은 파일 다운로드를 다시 시작하고 나머지 바이트를 파일 끝에 추가하려고 시도합니다.
로컬 파일 크기가 원격 파일 크기와 같으면 아무 작업도 수행되지 않으며 cmdlet은 다운로드가 이미 완료된 것으로 가정합니다.
로컬 파일 크기가 원격 파일 크기보다 큰 경우 로컬 파일을 덮어쓰고 전체 원격 파일을 다시 다운로드합니다. 이 동작은 없이 OutFile을(를) 사용하는 것이다시 사용한 것과 같습니다.
원격 서버에서 다운로드 재개를 지원하지 않는 경우 로컬 파일을 덮어쓰고 전체 원격 파일을 다시 다운로드합니다. 이 동작은 없이 OutFile을(를) 사용하는 것이다시 사용한 것과 같습니다.
로컬 파일이 없으면 로컬 파일이 만들어지고 전체 원격 파일이 다운로드됩니다. 이 동작은 없이 OutFile을(를) 사용하는 것이다시 사용한 것과 같습니다.
이 기능은 PowerShell 6.1.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-RetryIntervalSec
400에서 599 사이의 오류 코드(포함 또는 304)가 수신될 때 연결에 대한 재시도 간격을 지정합니다. 재시도 횟수를 지정하는 MaximumRetryCount 매개 변수도 참조하세요. 값은 1[int]::MaxValue사이여야 합니다.
오류 코드가 429이고 응답에 헤더에 Retry-After 속성이 포함된 경우 이 매개 변수가 지정된 경우에도 cmdlet은 재시도 간격에 해당 값을 사용합니다.
매개 변수 속성
| 형식: | Int32 |
| Default value: | 5 |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SessionVariable
이 cmdlet이 웹 요청 세션을 만들고 값에 저장하는 변수를 지정합니다.
달러 기호($) 기호 없이 변수 이름을 입력합니다.
세션 변수를 지정하면 Invoke-WebRequest 웹 요청 세션 개체를 만들고 PowerShell 세션에서 지정된 이름을 가진 변수에 할당합니다. 명령이 완료되는 즉시 세션에서 변수를 사용할 수 있습니다.
PowerShell 7.4 이전에는 웹 요청 세션이 영구 연결이 아닙니다. 쿠키, 자격 증명, 최대 리디렉션 값 및 사용자 에이전트 문자열을 포함하여 연결 및 요청에 대한 정보를 포함하는 개체입니다. 웹 요청 간에 상태 및 데이터를 공유하는 데 사용할 수 있습니다.
PowerShell 7.4부터 세션의 속성이 후속 요청에서 재정의되지 않는 한 웹 요청 세션은 영구적입니다. 이 경우 cmdlet은 새 값을 사용하여 세션을 다시 만듭니다. 영구 세션은 반복된 요청에 대한 오버헤드를 줄여 훨씬 더 빠르게 만듭니다.
후속 웹 요청에서 웹 요청 세션을 사용하려면 WebSession 매개 변수 값에 세션 변수를 지정합니다. PowerShell은 새 연결을 설정할 때 웹 요청 세션 개체의 데이터를 사용합니다. 웹 요청 세션의 값을 재정의하려면 UserAgent 또는 자격 증명같은 cmdlet 매개 변수를 사용합니다. 매개 변수 값이 웹 요청 세션의 값보다 우선합니다.
동일한 명령에서 SessionVariable 및 WebSession 매개 변수를 사용할 수 없습니다.
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
| 별칭: | SV |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SkipCertificateCheck
인증서 유효성 검사를 건너뜁니다. 여기에는 만료, 해지, 신뢰할 수 있는 루트 기관 등과 같은 모든 유효성 검사가 포함됩니다.
경고
이 매개 변수를 사용하는 것은 안전하지 않으며 권장되지 않습니다. 이 스위치는 테스트 목적으로 자체 서명된 인증서를 사용하는 알려진 호스트에 대해서만 사용됩니다. 사용자 고유의 위험에 사용합니다.
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SkipHeaderValidation
cmdlet이 유효성 검사 없이 요청에 헤더를 추가해야 함을 나타냅니다.
이 스위치는 표준을 준수하지 않는 헤더 값이 필요한 사이트에 사용해야 합니다. 이 스위치를 지정하면 유효성 검사를 사용하지 않도록 설정하여 값을 선택 취소할 수 있습니다. 지정하면 모든 헤더가 유효성 검사 없이 추가됩니다.
이 스위치는 ContentType, 헤더 및 UserAgent 매개 변수 전달된 값에 대한 유효성 검사를 사용하지 않도록 설정합니다.
이 기능은 PowerShell 6.0.0에 추가되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SkipHttpErrorCheck
이 매개 변수를 사용하면 cmdlet이 HTTP 오류 상태를 무시하고 응답을 계속 처리합니다. 오류 응답은 성공한 것처럼 파이프라인에 기록됩니다.
이 매개 변수는 PowerShell 7에서 도입되었습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-SslProtocol
웹 요청에 허용되는 SSL/TLS 프로토콜을 설정합니다. 기본적으로 시스템에서 지원하는 SSL/TLS 프로토콜이 모두 허용됩니다. SslProtocol 규정 준수를 위해 특정 프로토콜로 제한할 수 있습니다.
이러한 값은 플래그 기반 열거형으로 정의됩니다. 이 매개 변수를 사용하여 여러 값을 결합하여 여러 플래그를 설정할 수 있습니다. 값은 SslProtocol 매개 변수에 값 배열 또는 해당 값의 쉼표로 구분된 문자열로 전달될 수 있습니다. cmdlet은 이진 OR 연산을 사용하여 값을 결합합니다. 값을 배열로 전달하는 것이 가장 간단한 옵션이며 값에 대한 탭 완성을 사용할 수도 있습니다. 모든 플랫폼에서 여러 옵션을 정의할 수 없습니다.
비고
비 Windows 플랫폼에서는 옵션으로 Tls 또는 Tls12 제공하지 못할 수 있습니다.
Tls13 대한 지원은 모든 운영 체제에서 사용할 수 없으며 운영 체제별로 확인해야 합니다.
이 기능은 PowerShell 6.0.0에 추가되었으며 Tls13 대한 지원이 PowerShell 7.1에 추가되었습니다.
매개 변수 속성
| 형식: | WebSslProtocol |
| Default value: | None |
| 허용되는 값: | Default, Tls, Tls11, Tls12 |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Token
요청에 포함할 OAuth 또는 전달자 토큰입니다. 특정 인증 옵션에는 토큰 필요합니다. 독립적으로 사용할 수 없습니다.
토큰 토큰이 포함된 SecureString 사용합니다. 토큰을 수동으로 제공하려면 다음을 사용합니다.
Invoke-WebRequest -Uri $uri -Authentication OAuth -Token (Read-Host -AsSecureString)
이 매개 변수는 PowerShell 6.0에서 도입되었습니다.
매개 변수 속성
| 형식: | SecureString |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-TransferEncoding
전송 인코딩 HTTP 응답 헤더의 값을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
ChunkedCompressDeflateGZipIdentity
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 허용되는 값: | chunked, compress, deflate, gzip, identity |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-UnixSocket
연결할 Unix 소켓의 이름을 지정합니다. 이 매개 변수는 Unix 기반 시스템 및 Windows 버전 1803 이상에서 지원됩니다. Unix 소켓의 Windows 지원에 대한 자세한 내용은 AF_UNIX 블로그 게시물과 Windows/WSL Interop을 참조하세요.
이 매개 변수는 PowerShell 7.4에 추가되었습니다.
매개 변수 속성
| 형식: | UnixDomainSocketEndPoint |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-Uri
웹 요청을 보낼 인터넷 리소스의 URI(Uniform Resource Identifier)를 지정합니다. URI를 입력합니다. 이 매개 변수는 HTTP 또는 HTTPS만 지원합니다.
이 매개 변수는 필수입니다. 매개 변수 이름 Uri 선택 사항입니다.
매개 변수 속성
| 형식: | Uri |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | 0 |
| 필수: | True |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-UseBasicParsing
이 매개 변수는 더 이상 사용되지 않습니다. PowerShell 6.0.0부터 모든 웹 요청은 기본 구문 분석만 사용합니다. 이 매개 변수는 이전 버전과의 호환성을 위해서만 포함되며 이 매개 변수를 사용하면 cmdlet 작업에 영향을 주지 않습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-UseDefaultCredentials
cmdlet이 현재 사용자의 자격 증명을 사용하여 웹 요청을 보내도록 나타냅니다. 인증 또는 자격 증명 사용할 수 없으며 모든 플랫폼에서 지원되지 않을 수 있습니다.
매개 변수 속성
| 형식: | SwitchParameter |
| Default value: | False |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-UserAgent
웹 요청에 대한 사용자 에이전트 문자열을 지정합니다.
기본 사용자 에이전트는 각 운영 체제 및 플랫폼에 대해 약간 변형된 Mozilla/5.0 (Windows NT 10.0; Microsoft Windows 10.0.15063; en-US) PowerShell/6.0.0 유사합니다.
대부분의 인터넷 브라우저에서 사용하는 표준 사용자 에이전트 문자열로 웹 사이트를 테스트하려면 Chrome, Firefox, InternetExplorer, Opera 및 Safari와 같은 PSUserAgent 클래스의 속성을 사용합니다.
예를 들어 다음 명령은 Internet Explorer에 대한 사용자 에이전트 문자열을 사용합니다. Invoke-WebRequest -Uri https://website.com/ -UserAgent ([Microsoft.PowerShell.Commands.PSUserAgent]::InternetExplorer)
매개 변수 속성
| 형식: | String |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
-WebSession
웹 요청 세션을 지정합니다. 달러 기호($)를 포함하여 변수 이름을 입력합니다.
웹 요청 세션의 값을 재정의하려면 UserAgent 또는 자격 증명같은 cmdlet 매개 변수를 사용합니다. 매개 변수 값이 웹 요청 세션의 값보다 우선합니다.
Content-Type같은 콘텐츠 관련 헤더는 MultipartFormDataContent 개체가 Body제공될 때도 재정의됩니다.
원격 세션과 달리 웹 요청 세션은 영구 연결이 아닙니다. 쿠키, 자격 증명, 최대 리디렉션 값 및 사용자 에이전트 문자열을 포함하여 연결 및 요청에 대한 정보를 포함하는 개체입니다. 웹 요청 간에 상태 및 데이터를 공유하는 데 사용할 수 있습니다.
웹 요청 세션을 만들려면 명령의 Invoke-WebRequest 매개 변수 값에 달러 기호 없이 변수 이름을 입력합니다.
Invoke-WebRequest 세션을 만들고 변수에 저장합니다. 후속 명령에서 변수를 WebSession 매개 변수의 값으로 사용합니다.
동일한 명령에서 SessionVariable 및 WebSession 매개 변수를 사용할 수 없습니다.
매개 변수 속성
| 형식: | WebRequestSession |
| Default value: | None |
| 와일드카드 지원: | False |
| DontShow: | False |
매개 변수 집합
(All)
| Position: | Named |
| 필수: | False |
| 파이프라인의 값: | False |
| 속성 이름별 파이프라인의 값: | False |
| 나머지 인수의 값: | False |
CommonParameters
이 cmdlet은 일반적인 매개 변수인 -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction 및 -WarningVariable 매개 변수를 지원합니다. 자세한 내용은 about_CommonParameters를 참조하세요.
입력
Object
웹 요청의 본문을 이 cmdlet으로 파이프할 수 있습니다.
출력
BasicHtmlWebResponseObject
이 cmdlet은 웹 요청의 결과를 나타내는 응답 개체를 반환합니다.
참고
PowerShell에는 Invoke-WebRequest에 대한 다음과 같은 별칭들이 포함되어 있습니다.
- 모든 플랫폼:
iwr
PowerShell 6.0.0부터 Invoke-WebRequest 기본 구문 분석만 지원합니다.
자세한 내용은 BasicHtmlWebResponseObject참조하세요.
.NET Core 3.1의 변경으로 인해 PowerShell 7.0 이상에서는 HttpClient.DefaultProxy 속성을 사용하여 프록시 구성을 확인합니다.
이 속성의 값은 플랫폼에 의해 결정됩니다.
- Windows: 환경 변수에서 프록시 구성을 읽습니다. 해당 변수가 정의되지 않은 경우 속성은 사용자의 프록시 설정에서 파생됩니다.
- macOS: 환경 변수에서 프록시 구성을 읽습니다. 이러한 변수가 정의되지 않은 경우 속성은 시스템의 프록시 설정에서 파생됩니다.
- For Linux: 환경 변수에서 프록시 구성을 읽습니다. 해당 변수가 정의되지 않은 경우 속성은 모든 주소를 우회하는 구성되지 않은 인스턴스를 초기화합니다.
Windows 및 Unix 기반 플랫폼에서 DefaultProxy 초기화에 사용되는 환경 변수는 다음과 같습니다.
-
HTTP_PROXY: HTTP 요청에 사용되는 프록시 서버의 호스트 이름 또는 IP 주소입니다. -
HTTPS_PROXY: HTTPS 요청에 사용되는 프록시 서버의 호스트 이름 또는 IP 주소입니다. -
ALL_PROXY:HTTP_PROXY또는HTTPS_PROXY정의되지 않은 경우 HTTP 및 HTTPS 요청에 사용되는 프록시 서버의 호스트 이름 또는 IP 주소입니다. -
NO_PROXY: 프록시에서 제외해야 하는 쉼표로 구분된 호스트 이름 목록입니다.
PowerShell 7.4는 Brotli 압축 알고리즘에 대한 지원을 추가했습니다.