从Azure Blob检索文件内容

时间:2019-06-10 13:39:49

标签: azure email azure-storage-blobs azure-powershell

我想通过使用Azure AA中的sendgrid发送报告。问题是,我被迫在脚本中使用纯文本形式的apikey传递,显然我想不惜一切代价避免这种情况。我想我可以使用apikey将文件保存在txt文件中特定容器中隐藏的Azure存储的某个地方。我想要实现的是这样的:

(...)
$HTMLDetails = @{
Title = $Subject
Head = $CSS
}

$Username ="username"

$apikey = get-storageblobfilecontent -container x -blob y -file z | Out-String

$Password = ConvertTo-SecureString $apikey -Force

$Credential = New-Object System.Management.Automation.PSCredential $Username, $Password

$Splat = @{
    To          =...
    Cc          =...
    Body       ="$(import-csv -delimiter ";" DiskReport.csv | ConvertTo-Html @HTMLDetails)"
    Subject     = $Subject
    smtpServer  ="smtp.sendgrid.net"
    From        ="AzureReporting@azure.com" 
    BodyAsHtml  = $True
    }

Send-MailMessage @Splat -Credential $Credential -Usessl -Port xxx

实际上可行吗?不能选择从VM检索文件内容,因为Runbook脚本无法直接访问VM。

1 个答案:

答案 0 :(得分:1)

您可以在运行手册中使用内置的Get-AutomationPSCredential cmdlet。在“自动化”帐户级别,您可以配置安全存储的凭据,然后将其带入您的运行簿(配置它以使输出永远不会以明文形式写入主机)。

在AA的“凭据”选项卡内创建一个凭据(例如“ MyApiKey”)。在脚本内部,使用以下命令$apiKey = Get-AutomationPSCredential MyApiKey

然后可以将其传递到$Credential对象中。

有关实用程序的更多信息,请参见https://docs.microsoft.com/en-us/azure/automation/shared-resources/credentials#activities