Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 如何调用api设置密钥Vault密钥的过期日期_Azure_Powershell_Azure Keyvault - Fatal编程技术网

Azure 如何调用api设置密钥Vault密钥的过期日期

Azure 如何调用api设置密钥Vault密钥的过期日期,azure,powershell,azure-keyvault,Azure,Powershell,Azure Keyvault,我正在调用keyvault API来设置新的机密,实际上它工作得很好,这意味着机密显示正确,除非过期日期不在那里 $expiryDate = ((Get-Date).AddMonths(3)).ToFileTimeUtc() $body = @{ "value" = $KeyValue "contentType" = $KeyType "exp" = $expiryDate } |

我正在调用keyvault API来设置新的机密,实际上它工作得很好,这意味着机密显示正确,除非过期日期不在那里

$expiryDate = ((Get-Date).AddMonths(3)).ToFileTimeUtc()
$body =  @{
    "value"       = $KeyValue
    "contentType" = $KeyType
    "exp"         = $expiryDate
} | ConvertTo-Json

$params = @{
    "Uri"     = "https://$($KeyVaultName).vault.azure.net/secrets/$($KeyName)?api-version=7.0"
    "Method"  = "Put"
    "Headers" = @{
        'Authorization' = $Authorization
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"
    }
    "Body" = $body
}
从中我唯一能想到的是它需要一个整数,而我不确定Get Date是否返回一个整数

在当前的解决方案中,我尝试使用ToFileTimeUtc将其转换为整数 在那之前,我只是尝试了到通用时间,但两者都不起作用。 同样,密钥库上显示了该秘密,但似乎没有设置过期日期:

如前所述,我希望继续使用RESTAPI调用,而不是使用azAzure CLI。

解决方案:

# UNIX Epoch is January 1st, 1970 at 12:00 AM
$unixEpoch = Get-Date -Date "01/01/1970"
$expiryDate = ((Get-Date).AddMonths(3)).ToUniversalTime()
$unixExpiryDate = (New-TimeSpan -Start $unixEpoch -End 
$expiryDate).TotalSeconds

$attributes = @{
"exp" = $unixExpiryDate
}

$body =  @{     
    "value"       = $KeyValue
    "contentType" = $KeyType
    "attributes"  = $attributes
} | ConvertTo-Json
解决方案包含两个部分:

  • json构造错误,需要嵌套的“attributes”节点

  • 正如我在问题评论中指出的,归功于@Mathias R.Jessen, 它需要UNIX格式的日期:


  • 看起来你需要@MathiasR.Jessen首先感谢你的评论!我试图在powershell脚本中直接传递1620821776作为一个值,它应该是指向2021年5月的时间(以秒为单位)(这就是我试图通过脚本实现的目标)。但是没有任何东西…@MathiasR.Jessen解决方案在我的嵌套json中是错误的,但是如果没有您的评论,我无论如何也不会这样做:)非常感谢!那太好了,不客气!用答案发布答案:-)