使用“1”参数 <s> 调用 "DownloadString" 的异常

Exception calling "DownloadString" with "1' argument<s>

网络开发新手自学。我不是学CS的。我正在通过简单的步骤关注一本名为 HTML5 的书。有一个名为“构建输入表单”的课程,它使用免费的 Abyss 个人版 Web 服务器和 activeperl 脚本。 我想在我的机器上安装 activeperl。我在 windows 8.1。 Activestate 站点不再提供 .exe 文件,而是为 windows 10 提供 cli 安装。站点说 windows 8.1 也受支持。 我尝试为 windows 安装他们的 cli 程序命令,这是 powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')))".

然后我收到了这条错误信息。[附上截图] screenshot

然后我用谷歌搜索了异常,发现 powershell 没有配置为 2019 年之前的旧版本 windows 以使用 tls 1.2。 https://github.com/dotnet/docs/issues/6873

关于如何解决此问题的任何提示???

:

  • 以下是使target *.ps1 file下载成功的有效解决方案,但成功下载脚本后可能会出现其他问题已执行.

  • 确实,由于您使用的是 PowerShell v4,脚本执行失败,因为依赖于 v5+ Expand-Archive cmdlet,如您的后续问题 中所述。


启用 TLS 1.2,如下所示,在 .DownloadString() 调用之前的 ; 分隔语句中:

powershell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; & ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')))"

注意:由于您仅将 PowerShell 实例用于已知使用 TLS 1.2 的 单个 下载,以上内容仅启用 TLS 1.2 .


如果您还必须保留最初启用的协议:

PowerShell v5+ 语法:

powershell -Command "[Net.ServicePointManager]::SecurityProtocol += 'Tls12'; & ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')))"

PowerShell v4-语法:

powershell -Command "[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12; & ([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')))"