Azure PowerShell检索云经典证书
一段时间以来,我一直在努力寻找一种方法,从我们的CloudClassic资源中检索证书的输出 我们有一个云管理网关,它将证书存储在云服务中。作为监控的一部分,我希望找到一种使用powershell提取数据的方法Azure PowerShell检索云经典证书,azure,powershell,Azure,Powershell,一段时间以来,我一直在努力寻找一种方法,从我们的CloudClassic资源中检索证书的输出 我们有一个云管理网关,它将证书存储在云服务中。作为监控的一部分,我希望找到一种使用powershell提取数据的方法 有人有这方面的经验吗?尚未找到任何有效的方法。如果您想从Azure云服务检索证书,我们可以使用以下命令 比如说 在azure自动化帐户中创建运行方式帐户 剧本 $ConnectionAssetName=“AzureClassCrunasConnection” #使用证书对Azure进
有人有这方面的经验吗?尚未找到任何有效的方法。如果您想从Azure云服务检索证书,我们可以使用以下命令 比如说
$ConnectionAssetName=“AzureClassCrunasConnection”
#使用证书对Azure进行身份验证
详细写入“获取连接资产:$ConnectionAssetName”-详细
$Conn=获取自动连接-名称$ConnectionAssetName
如果($Conn-eq$null)
{
throw“无法检索连接资产:$ConnectionAssetName。请确保自动化帐户中存在此资产。”
}
$CertificateAssetName=$Conn.CertificateAssetName
详细编写“获取证书:$CertificateAssetName”-详细
$AzureCert=获取自动证书-名称$CertificateAssetName
if($AzureCert-eq$null)
{
throw“无法检索证书资产:$CertificateAssetName。请确保自动化帐户中存在此资产。”
}
编写详细的“使用证书向Azure进行身份验证”-详细
设置AzureSubscription-SubscriptionName$Conn.SubscriptionName-SubscriptionId$Conn.SubscriptionId-Certificate$AzureCert
选择AzureSubscription-SubscriptionId$Conn.SubscriptionId
$certs=获取AzureCertificate-ServiceName testcloud05
foreach($cert中的cert){
$result=[System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($cert.Data))
$result.Subject
获取日期$result.NotAfter-格式d
}
$ConnectionAssetName=“AzureClassicRunaConnection”
#使用证书对Azure进行身份验证
详细写入“获取连接资产:$ConnectionAssetName”-详细
$Conn=获取自动连接-名称$ConnectionAssetName
如果($Conn-eq$null)
{
throw“无法检索连接资产:$ConnectionAssetName。请确保自动化帐户中存在此资产。”
}
$CertificateAssetName=$Conn.CertificateAssetName
详细编写“获取证书:$CertificateAssetName”-详细
$AzureCert=获取自动证书-名称$CertificateAssetName
if($AzureCert-eq$null)
{
throw“无法检索证书资产:$CertificateAssetName。请确保自动化帐户中存在此资产。”
}
编写详细的“使用证书向Azure进行身份验证”-详细
设置AzureSubscription-SubscriptionName$Conn.SubscriptionName-SubscriptionId$Conn.SubscriptionId-Certificate$AzureCert
选择AzureSubscription-SubscriptionId$Conn.SubscriptionId
$certs=获取AzureCertificate-ServiceName“”
foreach($cert中的cert){
$result=[System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($cert.Data))
$result.Subject
获取日期$result.NotAfter-格式d
}
您能详细描述一下您的问题吗?我想获取存储在云服务上的证书的过期详细信息,我们有云管理网关。其目的是将其用作runbook powershell脚本的监视,以便在证书即将过期时收到通知。问题是我在看了几篇MS文章后,还没有找到提取这些详细信息的方法。Azure云服务证书的过期日期是:?有关更多详细信息,请参阅“是”,我已经看过那篇文章,但它只显示了如何创建它们。这不是我感兴趣的,OK。我会做一些测试和研究这就是我要找的!但是,我从runbook的测试窗格收到一个错误,它不知道术语:Set-AzureSubscription选择AzureSubscription获取AzureCertificate当前正在尝试调查原因is@MathiasOttsen是否可以提供错误消息?
Set-AzureSubscription:术语“Set-AzureSubscription”无法识别为cmdlet、函数、脚本文件的名称,或可操作程序。请检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。第21行字符:1+设置AzureSubscription-SubscriptionName$Conn.SubscriptionName-Subsc…+~~~~~~~~~~~~~~~~~~~+CategoryInfo:ObjectNotFound:(Set-AzureSubscription:String)[],CommandNotFoundException+FullyQualifiedErrorId:CommandNotFoundException
其他2个也一样。Az模块已加载。@MathiasOttsen您安装模块Azure了吗?是的,我认为它一定与缺少自动化帐户的权限有关。不管怎样,我会把你的帮助当作我的问题的答案!我不能马上测试它,但我可以从细节中看出这是我寻求的结果:-)
$ConnectionAssetName = "AzureClassicRunAsConnection"
# Authenticate to Azure with certificate
Write-Verbose "Get connection asset: $ConnectionAssetName" -Verbose
$Conn = Get-AutomationConnection -Name $ConnectionAssetName
if ($Conn -eq $null)
{
throw "Could not retrieve connection asset: $ConnectionAssetName. Assure that this asset exists in the Automation account."
}
$CertificateAssetName = $Conn.CertificateAssetName
Write-Verbose "Getting the certificate: $CertificateAssetName" -Verbose
$AzureCert = Get-AutomationCertificate -Name $CertificateAssetName
if ($AzureCert -eq $null)
{
throw "Could not retrieve certificate asset: $CertificateAssetName. Assure that this asset exists in the Automation account."
}
Write-Verbose "Authenticating to Azure with certificate." -Verbose
Set-AzureSubscription -SubscriptionName $Conn.SubscriptionName -SubscriptionId $Conn.SubscriptionID -Certificate $AzureCert
Select-AzureSubscription -SubscriptionId $Conn.SubscriptionID
$certs=Get-AzureCertificate -ServiceName testcloud05
foreach($cert in $certs){
$result=[System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($cert.Data))
$result.Subject
Get-Date $result.NotAfter -Format d
}
$ConnectionAssetName = "AzureClassicRunAsConnection"
# Authenticate to Azure with certificate
Write-Verbose "Get connection asset: $ConnectionAssetName" -Verbose
$Conn = Get-AutomationConnection -Name $ConnectionAssetName
if ($Conn -eq $null)
{
throw "Could not retrieve connection asset: $ConnectionAssetName. Assure that this asset exists in the Automation account."
}
$CertificateAssetName = $Conn.CertificateAssetName
Write-Verbose "Getting the certificate: $CertificateAssetName" -Verbose
$AzureCert = Get-AutomationCertificate -Name $CertificateAssetName
if ($AzureCert -eq $null)
{
throw "Could not retrieve certificate asset: $CertificateAssetName. Assure that this asset exists in the Automation account."
}
Write-Verbose "Authenticating to Azure with certificate." -Verbose
Set-AzureSubscription -SubscriptionName $Conn.SubscriptionName -SubscriptionId $Conn.SubscriptionID -Certificate $AzureCert
Select-AzureSubscription -SubscriptionId $Conn.SubscriptionID
$certs=Get-AzureCertificate -ServiceName "<your cloud service name>"
foreach($cert in $certs){
$result=[System.Security.Cryptography.X509Certificates.X509Certificate2]([System.Convert]::FromBase64String($cert.Data))
$result.Subject
Get-Date $result.NotAfter -Format d
}