title: Getting a session cookie using powershell
body: <p>I'm trying to get a session cookie using PowerShell and InternetExplorer.Application but nothing seems to work.</p>
  
  <p>There is no $ie.Document.cookie variable.
  The session cookie is not available to JavaScript(because it is http-only)</p>
  
  <pre><code># Create an ie com object
  $ie = New-Object -ComObject "InternetExplorer.Application" 
  $ie.visible = $true; 
  $ie.navigate2("https://www.example.com/login");
  # Wait for the page to load 
  while ($ie.Busy -eq $true) { Start-Sleep -Milliseconds 1000; }
  #Add login details 
  $ie.Document.getElementById("username").value = "user"; 
  $ie.Document.getElementById("password").value = "1234";
  $ie.Document.getElementsByName("login_button")[0].Click();
  while($ie.Busy -eq $true) { Start-Sleep -Milliseconds 1000; }
  $div = $ie.Document.getElementsByTagName('div')[0];
  $ie.navigate("javascript: window.location=document.cookie.match(new RegExp('(^| )csrf_token=([^;]+)'))[2]");
  while($ie.Busy -eq $true) { Start-Sleep -Milliseconds 1000; }
  $csrf = $ie.LocationUrl.Substring(32);
  echo $csrf;
  #Stop-Process -Name iexplore
  $session = New-Object Microsoft.PowerShell.Commands.WebRequestSession
  
  $cookie = New-Object System.Net.Cookie     
  $cookie.Name = "user_name"
  $cookie.Value = "user"
  $cookie.Domain = "www.example.com"
  $session.Cookies.Add($cookie);
  
  $cookie = New-Object System.Net.Cookie     
  $cookie.Name = "user_session_id"
  $cookie.Value = "What I need"
  $cookie.Domain = "www.example.com"
  $session.Cookies.Add($cookie);
  
  Invoke-WebRequest -URI "https://www.example.com/demo/my_file&amp;csrf_token=$csrf" -WebSession $session -OutFile 'finally.zip';
  echo 'Done!';
  </code></pre>
  
  <p>Note that the only way I found to get the csrf is to use javascript to get the value to the url, but I can't do it with the user_session_id because it is marked as http_only.</p>