From 15a48fe24fbb51d6908e82b30020fc813bb70b31 Mon Sep 17 00:00:00 2001 From: Pete Batard Date: Mon, 16 Nov 2020 17:26:11 +0000 Subject: [PATCH] Fix script failure with PowerShell 7.x * Won't help though, since Microsoft forcibly removed the ability to parse HTML in newer PowerShell, which we need... * Also fix session variable not being set. * Closes #19 --- Fido.ps1 | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Fido.ps1 b/Fido.ps1 index 7d54862..379d501 100644 --- a/Fido.ps1 +++ b/Fido.ps1 @@ -63,7 +63,11 @@ $code = @" } "@ -Add-Type -MemberDefinition $code -Namespace Gui -UsingNamespace "System.IO", "System.Text", "System.Drawing", "System.Globalization" -ReferencedAssemblies System.Drawing -Name Utils -ErrorAction Stop +if ($host.version -ge "7.0") { + Add-Type -MemberDefinition $code -Namespace Gui -UsingNamespace System.Runtime, System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies System.Drawing.Common -Name Utils -ErrorAction Stop +} else { + Add-Type -MemberDefinition $code -Namespace Gui -UsingNamespace System.IO, System.Text, System.Drawing, System.Globalization -ReferencedAssemblies System.Drawing -Name Utils -ErrorAction Stop +} Add-Type -AssemblyName PresentationFramework # Hide the powershell window: https://stackoverflow.com/a/27992426/1069307 [Gui.Utils]::ShowWindow(([System.Diagnostics.Process]::GetCurrentProcess() | Get-Process).MainWindowHandle, 0) | Out-Null @@ -582,10 +586,14 @@ $Continue.add_click({ $i = 0 $SelectedIndex = 0 try { - $r = Invoke-WebRequest -UserAgent $UserAgent -WebSession $Session $url + $r = Invoke-WebRequest -UserAgent $UserAgent -SessionVariable "Session" $url # Go through an XML conversion to keep all PowerShells happy... if (-not $($r.AllElements | ? {$_.id -eq "product-languages"})) { - throw "Unexpected server response" + if ($host.version -ge "7.0") { + throw "This PowerShell version can not parse HTML" + } else { + throw "Unexpected server response" + } } $html = $($r.AllElements | ? {$_.id -eq "product-languages"}).InnerHTML $html = $html.Replace("selected value", "value")