param( [string]$Url = "https://mail.deinedomain.tld/owa/", [string]$Username = "DOMAIN\user", [string]$Password = "secret", [switch]$IgnoreCertErrors ) [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 if ($IgnoreCertErrors) { [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } } function New-BasicAuthValue([string]$User,[string]$Pass){ $pair = "{0}:{1}" -f $User,$Pass "Basic " + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair)) } $req = [System.Net.HttpWebRequest]::Create($Url) $req.Method = "GET" $req.AllowAutoRedirect = $false $req.Headers.Add("Authorization", (New-BasicAuthValue $Username $Password)) $req.UserAgent = "OWA-BasicTest/PS5.1" try { $resp = $req.GetResponse() } catch [System.Net.WebException] { $resp = $_.Exception.Response } if ($resp) { "HTTP: {0}" -f ([int]$resp.StatusCode) "Location: {0}" -f $resp.Headers["Location"] "WWW-Authenticate: {0}" -f ($resp.Headers.GetValues("WWW-Authenticate") -join " | ") $resp.Close() } param( [string]$Url = "https://mail.deinedomain.tld/owa/", [switch]$IgnoreCertErrors ) [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 if ($IgnoreCertErrors) { [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } } $req = [System.Net.HttpWebRequest]::Create($Url) $req.Method = "GET" $req.AllowAutoRedirect = $false try { $resp = $req.GetResponse() } catch [System.Net.WebException] { $resp = $_.Exception.Response } if ($resp) { "HTTP: {0}" -f ([int]$resp.StatusCode) "WWW-Authenticate:" $resp.Headers.GetValues("WWW-Authenticate") $resp.Close() } else { "No response (TLS/DNS/Network issue)." } PS C:\Users\Manuel Zarat> C:\Users\Manuel Zarat\Desktop\eas.ps1 Target: https://eas.akm.at/Microsoft-Server-ActiveSync User: D2000\\jango.zarat Count: 20 Delay: 100ms Timeout: 10s [13:46:23.900] # 1 -> HTTP 401 (1156 ms) [13:46:25.197] # 2 -> HTTP 401 (1187 ms) [13:46:26.485] # 3 -> HTTP 401 (1181 ms) [13:46:27.753] # 4 -> HTTP 401 (1159 ms) [13:46:29.014] # 5 -> HTTP 401 (1147 ms) [13:46:30.271] # 6 -> HTTP 401 (1151 ms) [13:46:31.550] # 7 -> HTTP 401 (1161 ms) [13:46:32.821] # 8 -> HTTP 401 (1167 ms) [13:46:34.072] # 9 -> HTTP 401 (1141 ms) [13:46:35.328] # 10 -> HTTP 401 (1153 ms) [13:46:36.606] # 11 -> HTTP 401 (1168 ms) [13:46:37.876] # 12 -> HTTP 401 (1175 ms) [13:46:39.153] # 13 -> HTTP 401 (1151 ms) [13:46:40.395] # 14 -> HTTP 401 (1146 ms) [13:46:41.684] # 15 -> HTTP 401 (1188 ms) [13:46:42.964] # 16 -> HTTP 401 (1167 ms) [13:46:44.219] # 17 -> HTTP 401 (1162 ms) [13:46:45.651] # 18 -> HTTP 401 (1306 ms) [13:46:46.909] # 19 -> HTTP 401 (1156 ms) [13:46:48.180] # 20 -> HTTP 401 (1166 ms) PS C:\Users\Manuel Zarat> Hallo Besucher! Willkommen in diesem kleinen Wiki rund um IT. Vieles ist noch **unvollständig, unstrukturiert oder vielleicht sogar falsch bzw. irreführend**. Du kannst Artikel gerne [[todo|ergänzen oder verbessern]]. Gerne mit so vielen Links wie nötig. Bitte keine Werbelinks und nur selbst verfasste oder lizenzfreie Texte! Copyright beachten! =====Fehlende Verlinkungen===== Eine Liste von Seiten die noch erstellt werden müssen. ~~ORPHANSWANTED:wanted~~ <# PowerShell 5.1 – EAS Basic-Auth Test (sendet IMMER weiter, auch bei 429) Optional: - -IgnoreCertErrors (nur Test!) - -LogHeaders um X-EAS-FAIL / X-Blocked-By etc. zu sehen, falls du die in HAProxy setzt. #> param( [string]$Url = "https://eas.akm.at/Microsoft-Server-ActiveSync", [string]$Username = "D2000\\jango.zarat", [string]$Password = "Lunikoff0310!", [int]$Count = 20, [int]$DelayMs = 100, [int]$TimeoutSec = 10, [switch]$IgnoreCertErrors, [switch]$LogHeaders ) # TLS 1.2 erzwingen [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 # Optional: Zertifikatsfehler ignorieren (nur Tests) if ($IgnoreCertErrors) { [System.Net.ServicePointManager]::ServerCertificateValidationCallback = { $true } } function New-BasicAuthValue { param([string]$User, [string]$Pass) $pair = "{0}:{1}" -f $User, $Pass $b64 = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($pair)) return "Basic $b64" } $auth = New-BasicAuthValue -User $Username -Pass $Password Write-Host ("Target: {0}" -f $Url) Write-Host ("User: {0}" -f $Username) Write-Host ("Count: {0} Delay: {1}ms Timeout: {2}s" -f $Count, $DelayMs, $TimeoutSec) Write-Host "" for ($i=1; $i -le $Count; $i++) { $sw = [Diagnostics.Stopwatch]::StartNew() $code = -1 $err = $null $h = @{} try { $req = [System.Net.HttpWebRequest]::Create($Url) $req.Method = "GET" $req.AllowAutoRedirect = $false $req.Timeout = $TimeoutSec * 1000 $req.ReadWriteTimeout = $TimeoutSec * 1000 $req.UserAgent = "EAS-Test/PS5.1" $req.Headers.Add("Authorization", $auth) $req.Headers.Add("MS-ASProtocolVersion", "14.1") $resp = $req.GetResponse() $code = [int]$resp.StatusCode if ($LogHeaders) { foreach ($k in $resp.Headers.AllKeys) { $h[$k] = $resp.Headers[$k] } } $resp.Close() } catch [System.Net.WebException] { if ($_.Exception.Response) { $resp = $_.Exception.Response $code = [int]$resp.StatusCode if ($LogHeaders) { foreach ($k in $resp.Headers.AllKeys) { $h[$k] = $resp.Headers[$k] } } $resp.Close() } else { $err = $_.Exception.Message } } catch { $err = $_.Exception.Message } $sw.Stop() $ts = (Get-Date).ToString("HH:mm:ss.fff") if ($code -eq -1) { Write-Host ("[{0}] #{1,4} -> HTTP -1 ({2} ms) ERROR={3}" -f $ts, $i, $sw.ElapsedMilliseconds, $err) } else { if ($LogHeaders) { $xFail = $h["X-EAS-FAIL"] $xBlk = $h["X-Blocked-By"] $extra = @() if ($xFail) { $extra += ("X-EAS-FAIL={0}" -f $xFail) } if ($xBlk) { $extra += ("X-Blocked-By={0}" -f $xBlk) } $suffix = "" if ($extra.Count -gt 0) { $suffix = " " + ($extra -join " ") } Write-Host ("[{0}] #{1,4} -> HTTP {2} ({3} ms){4}" -f $ts, $i, $code, $sw.ElapsedMilliseconds, $suffix) } else { Write-Host ("[{0}] #{1,4} -> HTTP {2} ({3} ms)" -f $ts, $i, $code, $sw.ElapsedMilliseconds) } } # WICHTIG: NICHT abbrechen bei 429 – weiter senden Start-Sleep -Milliseconds $DelayMs }