首页 > 解决方案 > 无效的 URL 与未找到

问题描述

我希望验证 URL 类似于可以使用 Test-Path 对文件系统和注册表路径执行的操作。

但是,当然,Test-Path不适用于 URL,而且我一直无法在 PowerShell 中找到执行此操作的方法。

我可以使用Invoke-WebRequest,但据我所知,没有验证,如果找到它,我可以获得返回码 200,如果没有,我可以获得 404。

唯一的例外是无效的主机名,例如host,com,这让我想知道:

标签: powershellurlwell-formed

解决方案


vonPryziRon提供了关键指针:

您可以使用该System.Uri.IsWellFormedUriString方法测试 URI(URL)是否格式正确,即形式上有效(无论域是否存在、是否可达、路径是否存在……)。

要另外确保给定的 URI 仅限于特定的 URI方案,例如http://and https://,您可以执行以下操作:

$uri = 'https://example.org/foo?a=b&c=d%20e'

[uri]::IsWellFormedUriString($uri, 'Absolute') -and ([uri] $uri).Scheme -in 'http', 'https'

请注意,给定的 URI 必须已经包含转义形式的保留字符 才能被视为格式正确;例如,空格必须编码为%20,如上例所示,该System.Uri.EscapeDataString方法可以对 URI 的组成(非句法)部分执行此操作(例如[uri]::EscapeDataString('a b')


推荐阅读