Я включил свой код ниже ... Все, что я пытаюсь сделать, это l oop этот runbook через определенные c подписки в нашей среде Azure и заставить его отчитываться о резервных копиях, выполненных в этих подписках , При тестировании в Powershell ISE все работает отлично. В runbook'ах нет, это также не дает мне никаких ошибок, так что понятия не имею, что происходит .... Пожалуйста, ПОМОГИТЕ!
$connectionName = "AzureRunAsConnection"
try{
#Getting the service principal connection "AzureRunAsConnection"
$servicePrincipalConnection = Get-AutomationConnection -name $connectionName
"Logging into Azure..."
Add-AzAccount -ServicePrincipal -TenantID $servicePrincipalConnection.TenantID -ApplicationID $servicePrincipalConnection.ApplicationID -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
}
catch{
if(!$servicePrincipalConnection){
$ErrorMessage = "Connection $connectionName not found."
throw $ErrorMessage
}else {
Write-Error -Message $_.Exception
throw $_.Exception
}
}
if($err) {
throw $err
}
Import-Module Az.Accounts
function Send-Email() {
Write-Output "Sending an email"
$Username ="mymailaccount@azure.com" # Your user name - found in sendgrid portal
$Password = ConvertTo-SecureString "password" -AsPlainText -Force # SendGrid Password
$credential = New-Object System.Management.Automation.PSCredential $Username, $Password
$SMTPServer = "smtp.sendgrid.net"
$EmailFrom = "Emailfrom" # Can be anything - aaa@xyz.com
$EmailTo = "EmailTo" # Valid recepient email address
$Subject = "Azure Audit Report"
$Body = "Summary as of: " + (Get-Date -Format G) + " UTC"+ "`n`n" + ($Data | Out-String)
Send-MailMessage -smtpServer $SMTPServer -Credential $credential -Usessl -Port 587 -from $EmailFrom -to $EmailTo -subject $Subject -Body $Body -Attachments $filename
}
$Data = @()
"Selecting Subscriptions.."
$AzureSubscriptions = Get-AzSubscription | Where-Object -Property name -Match "TheOne"
"Looping Through Subscriptions..."
foreach($Subscription in $AzureSubscriptions) #Loop through all Subscriptions
{
Select-AzSubscription -SubscriptionObject $Subscription
$RSVaults = Get-AzRecoveryServicesVault | ?{$_.Name -notin @($ExcludeVault)}#Get Backup Vaults
foreach($Vault in $RSVaults)
{
Set-AzRecoveryServicesVaultContext -Vault $Vault
#Process each Vault
$DebugPreference = 'Continue'
Get-AzRecoveryServicesBackupJob 5>"$($FolderPath)\Debug.log" | %{ $Data += [PSCustomObject]@{
Subscription = $Subscription.Name
Vault = $Vault.Name
VMName = $_.WorkloadName
StartTime = $_.StartTime
EndTime = $_.EndTime
Duration = $_.Duration
Status = $_.Status
}
}
#MARS Agent backup , currently only works with Debug info - Should be supported in the Future
$D_i = 0 #Debug Object set
$D_Obj = @{Subscription = $Subscription.Name
Vault = $Vault.Name
VMName = ''
StartTime = ''
EndTime = ''
Duration = ''
Status = ''
}
Foreach ($str in @(Get-Content .\Debug.log))
{
$a_Str = (($str.Replace('"','').replace(",","").trim()) -split ' ')[1]
If ($str -like '*"jobType": "MabJob",*')
{$D_i = 1}
If ($Str -like '*"duration":*' -and $D_i -eq 1)
{$D_Obj.'Duration' = $a_Str}
If ($Str -like '*"mabServerName":*' -and $D_i -eq 1)
{$D_Obj.'VMName' = $a_Str}
If ($Str -like '*"status":*' -and $D_i -eq 1)
{$D_Obj.'Status' = $a_Str}
If ($Str -like '*"startTime":*' -and $D_i -eq 1)
{$D_Obj.'StartTime' = [datetime]$a_Str}
If ($Str -like '*"endTime":*' -and $D_i -eq 1)
{$D_Obj.'EndTime' = [datetime]$a_Str
$Data += [pscustomobject]$D_Obj
$D_i = 0
#Reset the Object
$D_Obj = @{Subscription = $Subscription.Name
Vault = $Vault.Name
VMName = ''
StartTime = ''
EndTime = ''
Duration = ''
Status = ''
}
}
}
}
}
#Region HTML Report
$css = @"
<Title>Azure Backup Report: $(Get-Date -Format 'dd MMMM yyyy' )</Title>
<Style>
th {
font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica,
sans-serif;
color: #FFFFFF;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
border-top: 1px solid #C1DAD7;
letter-spacing: 2px;
text-transform: uppercase;
text-align: left;
padding: 6px 6px 6px 12px;
background: #5F9EA0;
}
td {
font: 11px "Trebuchet MS", Verdana, Arial, Helvetica,
sans-serif;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
background: #fff;
padding: 6px 6px 6px 12px;
color: #6D929B;
}
</Style>
"@
[string]$FileName = "AzureBackupReport$(Get-date -f ddMMyyyy).html"
$Report = $Data | ConvertTo-Html -Head $css; $Report |Out-File "$filename"
"Done."
Send-Email