PowerShell에서 curl(Invoke-WebRequest)을 사용하는 방법 자습서

앞말
PowerShell은 무엇을 할 수 있습니까?PowerShell은 먼저 하나의 Shell로 명령과 운영체제, 특히 파일 시스템과 상호작용을 하여 응용 프로그램을 시작할 수 있고 심지어는 응용 프로그램을 조종할 수 있도록 정의했다.둘째, PowerShell은 몇 개의 명령을 조합하여 파일에 넣고 실행하여 파일 레벨의 중용을 실현할 수 있다. 즉, 스크립트의 성질이 있다는 것이다.셋째, PowerShell을 활용할 수 있습니다.Net 유형과 COM 대상은 각종 시스템과 간단하게 상호작용하여 각종 복잡하고 자동화된 조작을 완성한다.
우리가 윈도우즈의 인터페이스 모드에 익숙해지면 명령행을 옮기기 어렵고 심지어 명령행으로 시작하는git도 각종 인터페이스 도구가 쏟아져 나온다.하지만 명령행은 정말 인터페이스보다 빠를 것이다. 만약 당신이 야드 농사꾼이라면.
situation: 수요 분석 버그를 받았습니다. http에 접근해야 합니다.그 기계는 제품에 속하여postman을 설치하는 것을 허락하지 않는다.나는 수동 명령줄로만 요청을 보낼 수 있다.내장된 PowerShell에서curl 명령이 발견되었습니다.기쁨은 한참 동안 시도했지만 항상 명령이 틀렸다. 구글은 이curl이 사칭으로 대체된 것을 발견했다. 단지 Invoke-WebRequest의 alias일 뿐이다참고 .

PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize

CommandType Name      Version Source
----------- ----      ------- ------
Alias  curl -> Invoke-WebRequest
Alias  iwr -> Invoke-WebRequest
Alias  wget -> Invoke-WebRequest
Invoke-WebRequest 간단한 사용 방법
1. 용도

Gets content from a web page on the Internet.
http 웹 요청 접근 내용 가져오기
2. 구문 Syntax

Parameter Set: Default
Invoke-WebRequest [-Uri] <Uri> [-Body <Object> ] [-Certificate <X509Certificate> ] [-CertificateThumbprint <String> ] [-ContentType <String> ] [-Credential <PSCredential> ] [-DisableKeepAlive] [-Headers <IDictionary> ] [-InFile <String> ] [-MaximumRedirection <Int32> ] [-Method <WebRequestMethod> {Default | Get | Head | Post | Put | Delete | Trace | Options | Merge | Patch} ] [-OutFile <String> ] [-PassThru] [-Proxy <Uri> ] [-ProxyCredential <PSCredential> ] [-ProxyUseDefaultCredentials] [-SessionVariable <String> ] [-TimeoutSec <Int32> ] [-TransferEncoding <String> {chunked | compress | deflate | gzip | identity} ] [-UseBasicParsing] [-UseDefaultCredentials] [-UserAgent <String> ] [-WebSession <WebRequestSession> ] [ <CommonParameters>]
3. 간단한 몇 가지 용법
3.1 요청 받기

PS C:\Users\rmiao> curl -URi https://www.google.com

StatusCode  : 200
StatusDescription : OK
Content   : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world's information, including webpages, images, videos and more. Google has many speci..."
RawContent  : HTTP/1.1 200 OK
     X-XSS-Protection: 1; mode=block
     X-Frame-Options: SAMEORIGIN
     Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32"
     Vary: Accept-Encoding
     Transfer-Encoding: chunked
콘텐츠가 차단된 것을 발견할 수 있습니다.전체 콘텐츠를 가져오려면:

ps> curl https://www.google.com | Select -ExpandProperty Content
3.2 헤더 추가

-Headers @{"accept"="application/json"}
3.3 지정 방법

-Method Get
3.4 가져온 콘텐츠를 파일로 출력

-OutFile 'c:\Users\rmiao\temp\content.txt'
3.5 양식 제출

For example:
$R = Invoke-WebRequest http://website.com/login.aspx 
$R.Forms[0].Name = "MyName" 
$R.Forms[0].Password = "MyPassword" 
Invoke-RestMethod http://website.com/service.aspx -Body $R
or

Invoke-RestMethod http://website.com/service.aspx -Body $R.Forms[0]
3.6 컨텐트 필터링

PS C:\Users\rmiao> $R = Invoke-WebRequest -URI http://www.bing.com?q=how+many+feet+in+a+mile
PS C:\Users\rmiao> $R.AllElements | where {$_.innerhtml -like "*=*"} | Sort { $_.InnerHtml.Length } | Select InnerText -
First 5

innerText
---------
=

1
Next
=
3.7 로그인 예

# , sessionVariable  fb,  $R
# FB header.cookie 
PS C:\Users\rmiao> $R=curl http://www.facebook.com/login.php -SessionVariable fb
PS C:\Users\rmiao> $FB


Headers    : {}
Cookies    : System.Net.CookieContainer
UseDefaultCredentials : False
Credentials   :
Certificates   :
UserAgent    : Mozilla/5.0 (Windows NT; Windows NT 6.3; en-US) WindowsPowerShell/4.0
Proxy     :
MaximumRedirection : -1


# response form Form
PS C:\Users\rmiao> $Form=$R.Forms[0]
PS C:\Users\rmiao> $Form.fields

Key               Value
---               -----
lsd               AVqQqrLW
display
enable_profile_selector
isprivate
legacy_return            0
profile_selector_ids
return_session
skip_api_login
signed_next
trynum              1
u_0_0
u_0_1
lgnrnd              214945_qGeg
lgnjs              n
email
pass
persistent
default_persistent           1



#  form
PS C:\Users\rmiao> $Form | Format-List


Id  : login_form
Method : post
Action : /login.php?login_attempt=1&lwv=100
Fields : {[lsd, AVqQqrLW], [display, ], [enable_profile_selector, ], [isprivate, ]...}


# 
$Form.fields

# 
$Form.Fields["email"] = "[email protected]"
$Form.Fields["pass"] = "P@ssw0rd"

# $R
$R=Invoke-WebRequest -Uri ("https://www.facebook.com" + $Form.Action) -WebSession $FB -Method POST -Body $Form.Fields

# 
PS C:\Users\rmiao> $R.StatusDescription
OK
curl만큼 주류는 아니지만 http 접근의 선택이 될 수 있습니다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 일정한 도움을 줄 수 있기를 바랍니다. 만약에 의문이 있으면 여러분은 댓글을 남겨 교류할 수 있습니다. 저희에 대한 지지에 감사드립니다.
참고
https://technet.microsoft.com/en-us/library/hh849901.aspx

좋은 웹페이지 즐겨찾기