क्या curl
पॉवरशेल के बराबर है ? क्या इसमें कुछ समान अंतर्निहित क्षमता है या क्या कोई 3 पार्टी का cmdlet है?
क्या curl
पॉवरशेल के बराबर है ? क्या इसमें कुछ समान अंतर्निहित क्षमता है या क्या कोई 3 पार्टी का cmdlet है?
जवाबों:
PowerShell 3.0 में नया कमांड है Invoke-RestMethod
:
http://technet.microsoft.com/en-us/library/hh849971.aspx
ज्यादा जानकारी:
https://discoposse.com/2012/06/30/powershell-invoke-restmethod-putting-the-curl-in-your-shell/
curl
या wget
Powershell में aliased है ।
Powershell 5.0 के रूप में, यदि पहले नहीं, तो इसके curl
लिए एक अन्य नाम है Invoke-WebRequest
।
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
अप्रयुक्त आदेश का उपयोग करने के लिए ...
PS> Invoke-WebRequest -Uri https://localhost:443/
PS> Invoke-WebRequest -Uri https://www.google.com
इसलिए अनुरोध के कई गुणों को निम्नानुसार लौटाएं ...
PS> Invoke-WebRequest -Uri https://www.google.com
StatusCode : 200
StatusDescription : OK
Content : <!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en-AU"><head><meta content="text/html; charset=UTF-8"
http-equiv="Content-Type"><meta content="/images/branding/googleg/1x/...
RawContent : HTTP/1.1 200 OK
X-XSS-Protection: 1; mode=block
X-Frame-Options: SAMEORIGIN
Vary: Accept-Encoding
... या सिर्फ सामग्री ...
PS> Invoke-WebRequest -Uri https://www.google.com | Select-Object -ExpandProperty Content
<!doctype html><html itemscope="" itemtype="http://schem[etc ...]
समान उपनाम वाले आदेश हैं ...
PS> curl -Uri https://www.google.com
PS> curl -Uri https://www.google.com | Select-Object -ExpandProperty Content
Powershell चूक और अन्य उपनामों का उत्तोलन आप कमांड को छोटा कर सकते हैं
PS> curl https://www.google.com
ps> curl https://www.google.com | Select -ExpandProperty Content
... लेकिन मैं इसकी सिफारिश नहीं करूंगा। वर्बोज़ कमांड्स आपके कोड को पढ़ते समय दूसरों की मदद करते हैं।
अपडेट करें:
के रूप में Powershell 6.x "कोर" curl
नहीं रह गया है के लिए एक उपनाम है Invoke-WebRequest
(उर्फ wget
भी निकाल दिया जाता है)। इसके बजाय Invoke-WebRequest
सीधे उपयोग करें।
PS> Get-Alias -Definition Invoke-WebRequest | Format-Table -AutoSize
CommandType Name Version Source
----------- ---- ------- ------
Alias iwr -> Invoke-WebRequest
कर्ल अब Invoke-WebRequest (Powershell 6.2.3 पर परीक्षण किया गया) के लिए एक उपनाम नहीं है, एक RFC में प्रस्ताव की स्पष्ट अस्वीकृति के बावजूद "एलियास कर्ल को हटाने और विंडोज पॉवरशेल से छूट के लिए" ।
यह RFC नोट करता है "Wget / कर्ल उपनामों को पहले से ही PowerShell Core से हटा दिया गया था, इसलिए समस्या [उन उपनामों के होने] Windows PowerShell तक सीमित थी।"
निष्कर्ष में पॉवर्सशेल टीम उपयोगकर्ताओं को "लिपियों में उपनामों पर भरोसा न करने" के लिए भी प्रोत्साहित करती है।
जैसा कि @ v6ak ने टिप्पणियों का उपयोग करते हुए curl
और पावरशेल में wget
(5.0 या उससे कम) नोट किया है: इसमें अनजाने में वास्तविक कर्ल लगाना या डगमगाना अगर साइड-बाय-साइड स्थापित है; और, किसी भी मामले में, भ्रम का कारण बनता है।
यह अनुशंसा की जाती है कि आप डिफ़ॉल्ट एन्कोडिंग का लाभ लेने के लिए पॉवर्सशैल "कोर" (6.x या इसके बाद के संस्करण) को अपग्रेड करें utf8NoBOM
, जब Invoke-WebRequest
(और कई अन्य टेक्स्ट आउटपुट कमांड का उपयोग करते हुए )। यदि कोई ऐसा स्पष्ट रूप से कर रहा था तो आप कुछ ऐसा कर सकते थे:
Invoke-WebRequest `
-Uri https://raw.githubusercontent.com/fancyapps/fancybox/master/dist/jquery.fancybox.min.js `
| Select-Object -ExpandProperty Content `
| Out-File jquery.fancybox.min.js `
-Encoding utf8NoBOM
हालांकि, यहां तक कि जब एक छोटी, अंतर्निहित, आदेश का उपयोग कर ...
Invoke-WebRequest `
-Uri https://raw.githubusercontent.com/fancyapps/fancybox/master/dist/jquery.fancybox.min.js `
-OutFile jquery.fancybox.min.js
... के साथ एन्कोडिंग की utf8NoBOM
जाएगी (आप इसे सत्यापित कर सकते हैं, उदाहरण के लिए, विजुअल स्टूडियो कोड में सहेजी गई फ़ाइल को खोलकर और स्टेटस बार में "UTF-8" देख सकते हैं)।
utf8NoBOM
विभिन्न पारिस्थितिकी प्रणालियों के माध्यम से यात्रा करते समय कम समस्याओं का कारण बनने वाली फाइलों को बचाया जाता है । बेशक, अगर आपको कुछ अन्य एन्कोडिंग की आवश्यकता है तो आप स्पष्ट रूप से कुछ विकल्प निर्धारित कर सकते हैं।
Powershell 5.0 में और निम्न utf8NoBOM
एन्कोडिंग उपलब्ध नहीं थी, अकेले डिफ़ॉल्ट को छोड़ दें।
विवरण:
get-help curl
। आप देखेंगे Invoke-WebRequest [-Uri] <Uri> ...
, []
संकेत देने वाले कोष्ठकों के साथ -Uri
छोड़ दिया जा सकता है (और इसलिए संक्षेप में आह्वान किया गया है)। जैसा कि मैंने मुख्य पोस्ट में उल्लेख किया है: सामान्य तौर पर आपको स्पष्ट होना चाहिए (जहां आप या अन्य भविष्य में अपना कोड पढ़ने जा रहे हैं)।
[]
किया है
get-help
, en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form के कुछ संस्करण में दिए गए हैं । आप पढ़ने / स्किम करने के लिए अच्छी तरह से करेंगे क्योंकि विस्तारित बैकस नौर फॉर्म के कुछ संस्करण का उपयोग संभवतः कई भाषाओं के वाक्यविन्यास का वर्णन करने के लिए किया जाता है जो हम आर-पार हैं। आप देखेंगे कि en.wikipedia.org/wiki/… कोष्ठक [ ...]
सिंटैक्स को वैकल्पिक बनाते हैं।
उत्कृष्ट कमांड लाइन कुंग फू ब्लॉग में एक पोस्ट है जहां वे कर्ल, विग और संबंधित पॉवरशेल कमांड की तुलना करते हैं
संक्षेप में:
(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html","C:\hello-world.html")
या, यदि आपके Powershell / .net का संस्करण 2 मापदंडों को स्वीकार नहीं करता है DownloadString
:
(New-Object System.Net.WebClient).DownloadString("http://www.example.com/hello-world.html") > "C:\hello-world.html"
आप Windows के लिए Git भी स्थापित कर सकते हैं , और फिर अपने रास्ते में Git बिन फ़ोल्डर डाल सकते हैं। Git इंस्टॉल में अन्य चीजों के अलावा, curl.exe शामिल है। स्थापित करने के बाद, बस %programfiles(x86)%\git\bin
अपने पेट में डाल दिया । तब आप Windows कमांड प्रॉम्प्ट या PowerShell कंसोल से कर्ल कमांड का उपयोग कर पाएंगे।
आप चॉकलेट के साथ CURL स्थापित कर सकते हैं और PowerShell CLI या में उपलब्ध कर्ल कर सकते हैं cmd
।
wget
या curl
विंडोज़ पर सबसे पास की चीज़ बिट्स (बैकग्राउंड इंटेलिजेंट ट्रांसफर सर्विस) है, जिसमें कुछ स्निपेट्स हैं जो पावरशेल के लिए तैयार हैं।
यह आदेश काम करना चाहिए:
Invoke-WebRequest -UseBasicParsing -Uri http://example.com/
यह PowerPhell 3.0 के बाद से Microsoft.PowerShell.Utility का हिस्सा है ।
इसे भी देखें: Powershell में पाठ फ़ाइल में लिखने के लिए $ webclient.downloadstring प्राप्त करें ।