我想通过使用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。
答案 0 :(得分:1)
您可以在运行手册中使用内置的Get-AutomationPSCredential cmdlet。在“自动化”帐户级别,您可以配置安全存储的凭据,然后将其带入您的运行簿(配置它以使输出永远不会以明文形式写入主机)。
在AA的“凭据”选项卡内创建一个凭据(例如“ MyApiKey”)。在脚本内部,使用以下命令$apiKey = Get-AutomationPSCredential MyApiKey
然后可以将其传递到$Credential
对象中。
有关实用程序的更多信息,请参见https://docs.microsoft.com/en-us/azure/automation/shared-resources/credentials#activities。