PowerShell 技能连载 - 解析 URL

经常有一种情况,URL 重定向到另一个最终的 URL。这种情况下,如果您希望知道一个指定的 URL 究竟指向哪,可以用类似这样的函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Resolve-Url
{
[CmdletBinding()]
param
(
[Parameter(Mandatory)]
[string]
$url
)

$request = [System.Net.WebRequest]::Create($url)
$request.AllowAutoRedirect=$false
$response = $request.GetResponse()
$url = $response.GetResponseHeader("Location")
$response.Close()
$response.Dispose()

return $url
}

例如,最新的 PowerShell 总是在这个 URL 发布:https://github.com/PowerShell/PowerShell/releases/latest

解析这个 URL,就可以获取最新的 URL。这是找到可用的最新 PowerShell 版本的快速方法:

1
2
3
4
5
6
7
8
9
10
11
PS C:\> Resolve-Url -url https://github.com/PowerShell/PowerShell/releases/latest
https://github.com/PowerShell/PowerShell/releases/tag/v6.2.1

PS C:\> ((Resolve-Url -url https://github.com/PowerShell/PowerShell/releases/latest) -split '/')[-1]
v6.2.1

PS C:\> [version](((Resolve-Url -url https://github.com/PowerShell/PowerShell/releases/latest) -split '/')[-1] -replace 'v')

Major Minor Build Revision
----- ----- ----- --------
6 2 1 -1
评论