我正在尝试将URL拆分为一个对象。
$url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1
所需的结果将是
PS C:\WINDOWS\system32> $url.api
https://api.somedomain.com/v2/direct-access
PS C:\WINDOWS\system32> $url.dataset
producing-entities-details
PS C:\WINDOWS\system32> $url.params
entity_id=104194825&format=json&page=1
我确定可以与正则表达式结合使用,但是我也想知道是否可以仅使用内置的PowerShell功能来完成。
答案 0 :(得分:4)
无需弄乱正则表达式。 [uri]
type accelerator会为您完成部分工作。其他部分似乎是特定于您选择如何解释数据的,而不是URL解剖的工作原理。
PS C:\Users\matt> $url = [uri]"https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"
PS C:\Users\matt> $url.Query
?entity_id=104194825&format=json&page=1
您可以浏览其他属性,并查看它们如何为您提供帮助。例如,您可能需要构建细分以获取所需的其他部分。
PS C:\Users\matt> $url.Segments
/
v2/
direct-access/
producing-entities-details
答案 1 :(得分:0)
$url = "https://api.somedomain.com/v2/direct-access/producing-entities-details?entity_id=104194825&format=json&page=1"
$uri = [System.Uri]$url
$ParsedQueryString = [System.Web.HttpUtility]::ParseQueryString($uri.Query)
$i = 0
$queryParams = @()
foreach($QueryStringObject in $ParsedQueryString){
$queryObject = New-Object -TypeName psobject
$queryObject | Add-Member -MemberType NoteProperty -Name Query -Value $QueryStringObject
$queryObject | Add-Member -MemberType NoteProperty -Name Value -Value $ParsedQueryString[$i]
$queryParams += $queryObject
$i++
}
$queryParams
输出:
Query Value
----- -----
entity_id 104194825
format json
page 1