PowerShell에서 curl(Invoke-WebRequest)을 사용하는 방법 자습서
6075 단어 powershellcurlinvoke-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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Powershell 7을 사용하여 Samba 서버로 파일을 전송하는 방법.MSSQL 덤프를 복사하여 콜드 스토리지 솔루션으로 원격 Linux Samba 서버에 저장하도록 설계한 twoScripts를 공유하고 싶습니다. 모든 서버가 Windows 서버였으며 내가 이것을 만들기로 결정한 이유...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.