【问题标题】:Adding cookies to InvokeRest-Method Powershell将 cookie 添加到 InvokeRest-Method Powershell
【发布时间】:2021-10-10 23:32:39
【问题描述】:

我需要对一个从 cookie 验证用户类型的网络服务器进行 POST 调用,但我不知道如何将此 cookie 添加到我的请求中。

$eth_config = Invoke-RestMethod -Method 'Post' -Uri $network_settings_url -Body $request_body  

【问题讨论】:

  • 检查this。可能是你需要的。

标签: powershell cookies invoke-restmethod


【解决方案1】:

创建一个新的WebRequestSession 对象:

$session = [Microsoft.PowerShell.Commands.WebRequestSession]::new()

将 cookie 添加到会话对象:

$cookie = [System.Net.Cookie]::new('cookieName', 'value')
$session.Cookies.Add('https://domain.tld/', $cookie)

然后将会话对象传递给Invoke-RestMethod-WebSession参数:

$eth_config = Invoke-RestMethod -Method 'Post' -Uri $network_settings_url -Body $request_body -WebSession $session

您可以编写一个函数来抽象 cookie 的创建:

function New-WebSession {
  param(
    [hashtable]$Cookies,
    [Uri]$For
  )

  $newSession = [Microsoft.PowerShell.Commands.WebRequestSession]::new()

  foreach($entry in $Cookies.GetEnumerator()){
    $cookie = [System.Net.Cookie]::new($entry.Name, $entry.Value)
    if($For){
      $newSession.Cookies.Add([uri]::new($For, '/'), $cookie)
    }
    else{
      $newSession.Cookies.Add($cookie)
    }
  }

  return $newSession
}

然后使用like:

$session = New-WebSession -Cookies @{ 
  cookieName = 'Some cookie value'
  anotherCookie = 'some other value'
} -For $network_settings_url
$eth_config = Invoke-RestMethod -Method Post -Uri $network_settings_url -Body $request_body -WebSession $session

【讨论】:

  • 非常感谢
  • 我不明白为什么微软官网确实包含一个例子,我经历了这么多例子找不到一个相关的
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 2018-06-12
  • 2012-06-25
相关资源
最近更新 更多