1
私はこれら2つの(動作中の)カールコマンドをpowershellに翻訳しようとしています。 Invoke-WebRequestでCookieをどのように保存しますか?Powershellは認証にクッキーを使用します
セッションCookieのbashの取得
curl -k \
--cookie-jar cookie \
-H 'Content-Type: application/json' \
-d '{"jsonrpc": "2.0", "id": 1, "method": "login", "params": {"username": "bob", "password": "correct-horse-battery-staple"}}' \
https://foo.example.com/api/session
取得セッションCookieのPowerShellの
$data = @{}
$data.jsonrpc = '2.0'
$data.id = '1'
$data.method = 'login'
$data.params = @{}
$data.params.username = 'bob'
$data.params.password = 'correct-horse-battery-staple'
$url = "https://foo.example.com/api/session"
$webrequest = Invoke-WebRequest -Method POST `
-ContentType 'application/json' `
-Body $data `
-Uri $url `
-SessionVariable websession `
-UseBasicParsing
$cookies = $websession.Cookies.GetCookies($url)
Write-Host "$($cookies[0].name) = $($cookies[0].value)"
のGetバージョンのbash
curl -k \
--cookie cookie \
-H 'Content-Type: application/json' \
-d '{"jsonrpc": "2.0", "id": 2, "method": "version"}' \
https://foo.example.com/api/about
のGetバージョンのPowerShell
$data = @{}
$data.jsonrpc = '2.0'
$data.id = '2'
$data.method = 'version'
$url = "https://foo.example.com/api/about"
Invoke-WebRequest -Method POST `
-ContentType 'application/json' `
-Body $data `
-Uri $url `
-WebSession $websession `
-UseBasicParsing
2番目のコマンドが正常にクッキーを渡すとエラーが返されていません
StatusCode : 200
StatusDescription : OK
Content : {"error":{"code":-32000,"message":"Decoding failed: Syntax error","data":null},"id":null}
RawContent : HTTP/1.1 200 OK
Pragma: no-cache
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Length: 89
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Content-Ty...
Forms :
Headers : {[Pragma, no-cache], [Keep-Alive, timeout=5, max=100], [Connection, Keep-Alive], [Content-Length, 89]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 89
「の復号化が失敗した」なぜ成功したクッキーでの認証が、PowerShellのエラーカールのでしょうか? APIはJSON
$data.gettype()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Hashtable System.Object
ソリューションはに$データを変換することです期待し、一方、$データ変数変数$ websession
$websession
Headers : {}
Cookies : System.Net.CookieContainer
UseDefaultCredentials : False
Credentials :
Certificates :
UserAgent : Mozilla/5.0 (Windows NT; Windows NT 6.3; en-US)
WindowsPowerShell/5.0.10586.117
Proxy :
MaximumRedirection : -1