如何在 powershell 中规范化此 URL?

How do I normalize this URL in powershell?

我有以下 Azure Key Vault 资源代码:

$tempkeyid = (Get-AzKeyVaultKey -VaultName $vaultname -Name $tempkeyname).Id
$tempkeyid = $tempkeyid.Substring(0, $tempkeyid.LastIndexOf('/'))
$tempkeyid
New-AzSynapseWorkspaceKey -ResourceGroupName $resourcegroup -WorkspaceName $workspacename -Name $tempkeyname -EncryptionKeyIdentifier $tempkeyid

第 2 行存在是因为密钥保管库 returns 版本标识符,但第 4 行需要无版本标识符

第 3 行中 $tempkeyid 的值为:

https://keyvaultname.vault.azure.net:443/keys/keyname

我收到错误:

New-AzSynapseWorkspaceKey: Key Vault URL should be a normalized URL

我尝试使用下面的代码对 URL 进行编码和解码,但编码尝试遇到相同的错误,而解码尝试遇到错误“无效的 URI:URI 的格式可能不确定”。我不确定如何以其他方式对其进行规范化,或者不确定具体是什么未规范化。 $tempkeyid 的值在我看来是正确的。

$tempkeyid = [System.Web.HttpUtility]::UrlEncode($tempkeyid) 
$tempkeyid = [System.Web.HttpUtility]::UrlDecode($tempkeyid)

编码与URI规范化不同,URI规范化是指以标准格式表达uri。 (参见 wikipedia entry)。在您的情况下,我猜它不喜欢使用默认端口 (:443)。要系统地获得规范化的 uri,请尝试这样的事情:

$tempkeyiduri = [System.Uri]($tempkeyid)
$tempkeyid = $tempkeyiduri.AbsoluteUri