0

我正在尝试创建一个脚本,以便在另一个自动化进程处理 blob 后将它们从一个容器移动到另一个容器。我正在使用的代码如下。

workflow Move-AttendeeFiles
{
    $connectionName = Get-AutomationConnection -Name 'AzureConnection'
    $storageAccountName = Get-AutomationVariable -Name 'StorageAccountName'
    $storageContainerName = Get-AutomationVariable -Name 'toprocessContainer'
    $destContainerName = Get-AutomationVariable -Name 'processedContainer'

    Connect-Azure `
        -AzureConnectionName $connectionName

    inlineScript{

        Select-AzureSubscription `
            -SubscriptionName $Using:connectionName

        Set-AzureSubscription ` 
            -SubscriptionName $Using:connectionName ` 
            -CurrentStorageAccount $Using:storageAccountName 

        Get-AzureStorageBlob `
        -Container $Using:storageContainerName | Start-AzureStorageBlobCopy `
        -DestContainer $Using:destContainerName 

    }
}

它抛出以下错误

无法检索“System.Collections.Hashtable”连接资产。检查您是否首先在自动化服务中创建了它。

我似乎无法让它运行,并且必须盯着它很久。任何帮助将非常感激。

4

2 回答 2

1

Connect-Azure Runbook 将连接资产名称作为字符串。您正在将连接本身传递给它。而是传递连接名称。

于 2015-05-07T22:57:59.383 回答
0

乔的回答让我过去了 Hashtable 错误,但我的代码中有一些其他错误。我想为每个人发布工作代码。

workflow Move-AttendeeFiles
{
    $connectionName = Get-AutomationVariable -Name 'azureConnectionName'
    $subId = Get-AutomationVariable -Name 'azureSubscriptionId'
    $storageAccountName = Get-AutomationVariable -Name 'StorageAccountName'
    $storageContainerName = Get-AutomationVariable -Name 'toprocessContainer'
    $destContainerName = Get-AutomationVariable -Name 'processedContainer'

    Connect-Azure `
        -AzureConnectionName $connectionName

    inlineScript{
        Select-AzureSubscription `
            -SubscriptionName $Using:connectionName

        Set-AzureSubscription `
            -CurrentStorageAccountName $Using:storageAccountName `
            -SubscriptionId $Using:subId

    }
}

请注意 Set-AzureSubscription 代码中使用 -SubscriptionId 而不是 -SubscriptionName 的区别,因为这不是正确的变量。

于 2015-05-08T15:17:55.543 回答