powershell - 无效的 URL 与未找到
问题描述
我希望验证 URL 类似于可以使用 Test-Path 对文件系统和注册表路径执行的操作。
但是,当然,Test-Path
不适用于 URL,而且我一直无法在 PowerShell 中找到执行此操作的方法。
我可以使用Invoke-WebRequest
,但据我所知,没有验证,如果找到它,我可以获得返回码 200,如果没有,我可以获得 404。
唯一的例外是无效的主机名,例如host,com
,这让我想知道:
除了无效的主机名之外,是否存在无效 URL 之类的东西?
或者,一旦正确定义了端口和主机,它基本上是 URL 路径中有效的任何字符吗?
解决方案
您可以使用该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')
)
推荐阅读
- java - 如何获取日期之间的月数?
- python - 无法删除\n
- javascript - 从必须转换为字符串的javascript日期计算时间前/天前
- c# - 在按钮中使用 IEnumerator 进行 Onclick 功能,但场景管理器不起作用
- javascript - 单击提交按钮服务器端 php 代码不起作用
- python - 如何在不使用线程作业更改其位置的情况下更新字符串的值?[Python]
- python-3.x - SciPy Optimizer 给出不满足约束的结果
- laravel - 可以在 AttachOne 中使用多个附件名称吗?
- oracle - 用户定义的函数,有条件地将文本拆分为 Oracle 列
- regex - Powershell 正则表达式匹配各种序列号