function getWebContextWeb([string]$anUrl, [string]$login1, [string]$mypsw1, [boolean]$claims1, [string]$cookieDomaine, [string]$CertificateThumbprint) { Write-Host "getWebContextWeb $($anUrl)" -ForegroundColor:Green MySpleep -seconds 10 $global:cookieDomaine = $cookieDomaine; $count = 0; $connected = $false; [Microsoft.SharePoint.Client.ClientContext]$context987 =$null; while($connected -eq $false) { WriteInfo "try to connecte on : '$($anUrl)' with CertificateThumbprint : '$($CertificateThumbprint)' " $count ++; try{ $response = Invoke-WebRequest -Verbose -URI $anUrl -CertificateThumbprint $CertificateThumbprint -UseDefaultCredentials -SessionVariable websession -ErrorAction:Stop Write-Host "connected '$($response.StatusCode)' cookieDomaine $($cookieDomaine) CertificateThumbprint $($CertificateThumbprint)" if("$($response.StatusCode)".Trim() -ne "200") { Write-Error "connection failed" $pp = Write-Error "connection failed" exit 0 } $cookies = $websession.Cookies.GetCookies($anUrl) # Here, you can output all of $cookies, or you can go through them one by one. Write-Host "cookies count $($cookies.Count)" for($i = 0 ; $i -lt $cookies.Count ; $i++) { Write-Host "cookie $($cookies[$i].name)" if($i -eq 0) { $global:cookieName1 = "$($cookies[$i].name)".Trim(); $global:cookieVal1 = "$($cookies[$i].value)".Trim(); } elseif($i -eq 1) { $global:cookieName2 = "$($cookies[$i].name)".Trim(); $global:cookieVal2 = "$($cookies[$i].value)".Trim(); } elseif($i -eq 02) { $global:cookieName3= "$($cookies[$i].name)".Trim(); $global:cookieVal3 = "$($cookies[$i].value)".Trim(); } } $global:cert = Get-ChildItem -Path cert:\CurrentUser\My | ?{$_.Thumbprint -eq $CertificateThumbprint} Write-Host " add_ExecutingWebRequest global:EventREceiverCount : $($anUrl)" $context987 = New-Object Microsoft.SharePoint.Client.ClientContext($anUrl); [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor ` [Net.SecurityProtocolType]::Tls11 -bor ` [Net.SecurityProtocolType]::Tls -bor ` [Net.SecurityProtocolType]::Ssl3 $global:iCount = 0; $context987.add_ExecutingWebRequest({ param($Source, $EventArgs) $request = $EventArgs.WebRequestExecutor.WebRequest $request.ClientCertificates.Add($global:cert) $webReq = $request; Write-Host " add_ExecutingWebRequest global:EventREceiverCount : " if($webReq.CookieContainer -eq $null) { $webReq.CookieContainer = New-Object System.Net.CookieContainer Write-Host "cookieName3 fdi '$($global:cookieName3)' : cookieVal3 '$($global:cookieVal3)'" $c3 = New-Object System.Net.Cookie($global:cookieName3, $global:cookieVal3, "/", $global:cookieDomaine); try { $webReq.CookieContainer.Add($c3); } catch { Write-Error "error while adding cookie cookieName3 $($global:cookieName3), cookieVal3 $($global:cookieVal3), cookieDomaine '$($global:cookieDomaine)'" Write-Error "$($_)" exit 0; } write-host "cookie added" } }) $web = $context987.Web; $context987.Load($web); $context987.ExecuteQuery(); Write-Host "Title : $($web.Title)" $connected = $true; Write-Host "connected on : $($stree) count $($count)" -ForegroundColor:Green } catch { WriteError " sleep 60 secondes count $($count) cannot conntect to sp with login : $($login1) $($_)" $context987.Dispose(); $context987 = $null; $connected = $false if($count -gt 10) { Write-Host "cannot connect to $($anUrl)" -ForegroundColor:Red exit 0 } MySpleep -seconds 60 } if($connected) { return $context987; } } return $null; }