首页 > 解决方案 > 从 Runbook 获取存储帐户中的所有 blob 名称

问题描述

我有一个非常简单的脚本,当从远程 powershell ISE 运行(不使用自动化运行手册中的 RUNAS 凭据)时,它绝对可以正常工作,但是当我们尝试从自动化运行手册运行它时,它返回 0 。以下是代码:-

$connectionName = "AzureRunAsConnection"
$SubId = "XXXXXXXXXXXXXXXXXX"
try
{
    $servicePrincipalConnection = Get-AutomationConnection -Name $connectionName         
    Write-Verbose "Logging in to Azure..." -Verbose
    Connect-AzAccount -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint -ApplicationId $servicePrincipalConnection.ApplicationId  -Tenant $servicePrincipalConnection.TenantId -ServicePrincipal
    Write-Verbose "Setting Subscription......" -Verbose
    Set-AzContext -SubscriptionId $SubId | Write-Verbose

}
catch {
        if (!$servicePrincipalConnection)
        {
            $ErrorMessage = "Connection $connectionName not found."
            throw $ErrorMessage
        } else{
            Write-Error -Message $_.Exception
            throw $_.Exception
        }
}

$storageAccount = Get-AzStorageAccount -ResourceGroupName $ResourceGroup -Name $StorageAccountName -ErrorAction SilentlyContinue

# Resource group name for the storage acccount
$ResourceGroup = "MYDEV01-RG"

# Storage account name
$StorageAccountName = "myDev01StrgName"


# Container name for analytics logs
$ContainerName = "`$logs"
$storageContext = $storageAccount.Context
$containers = New-Object System.Collections.ArrayList
$container = Get-AzStorageContainer -Context $storageContext -Name $ContainerName -ErrorAction SilentlyContinue |
        ForEach-Object { $containers.Add($_) } | Out-Null

Write-Output("> Container count: {0}" -f $containers.Count)

不确定我们是否因为自动化帐户(运行手册)不起作用而丢失了权限或其他东西,有什么帮助吗?

谢谢,

标签: azure-storageazure-blob-storageazure-automationazure-runbook

解决方案


在这个上花了 24 小时并盯着并尝试了所有内容后,结果发现上面的脚本是正确的,并且没有任何问题,但是存储帐户的防火墙和网络设置被设置为选择网络(您可以添加网络 IP 地址您想要允许或选择所有网络,这有助于我解决我的问题)。我绝不建议选择所有网络,但为了测试,我们可以然后只添加选定的网络,这应该可以工作。在此处输入图像描述


推荐阅读