Azure PowerShell检索云经典证书

Azure PowerShell检索云经典证书,azure,powershell,Azure,Powershell,一段时间以来,我一直在努力寻找一种方法,从我们的CloudClassic资源中检索证书的输出 我们有一个云管理网关,它将证书存储在云服务中。作为监控的一部分,我希望找到一种使用powershell提取数据的方法 有人有这方面的经验吗?尚未找到任何有效的方法。如果您想从Azure云服务检索证书,我们可以使用以下命令 比如说 在azure自动化帐户中创建运行方式帐户 剧本 $ConnectionAssetName=“AzureClassCrunasConnection” #使用证书对Azure进

一段时间以来,我一直在努力寻找一种方法,从我们的CloudClassic资源中检索证书的输出

我们有一个云管理网关,它将证书存储在云服务中。作为监控的一部分,我希望找到一种使用powershell提取数据的方法


有人有这方面的经验吗?尚未找到任何有效的方法。

如果您想从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
    
    }