Azure Automation中存在证书身份验证错误-Powershell代码

Azure Automation中存在证书身份验证错误-Powershell代码,powershell,azure,automation,certificate,Powershell,Azure,Automation,Certificate,今天我遇到了另一个与Powershell和Azure自动化相关的问题 让我们看看。。。我的意图是构建一个自动部署,该部署做一些事情,从我的blob中拾取和保存数据,并在所有这些过程之后,删除该部署 所以,我在我的powershell控制台上开发了它,没有任何问题。当我尝试将脚本“导入”到自动化时,问题就出现了。我用括号写“import”,因为我只是将代码复制到自动化控制台 我想发布图片,但我不能,所以我会尽量清楚地解释我所做的步骤,确保我没有忘记什么 首先,我创建了我的证书,一个扩展名为.cer

今天我遇到了另一个与Powershell和Azure自动化相关的问题

让我们看看。。。我的意图是构建一个自动部署,该部署做一些事情,从我的blob中拾取和保存数据,并在所有这些过程之后,删除该部署

所以,我在我的powershell控制台上开发了它,没有任何问题。当我尝试将脚本“导入”到自动化时,问题就出现了。我用括号写“import”,因为我只是将代码复制到自动化控制台

我想发布图片,但我不能,所以我会尽量清楚地解释我所做的步骤,确保我没有忘记什么

首先,我创建了我的证书,一个扩展名为.cer,另一个扩展名为.pfx,好的

在“管理证书”部分(在“设置”菜单中)上载第一个证书后,我创建了以下资产:

首先是凭证一,我将生成的另一个证书(.PFX)放在其中

在那之后,我创建了最后一个资产,连接一,在那里我在需要它的地方写下了证书名和订阅ID

现在,在这些点之后,我被允许在自动化中使用代码段操作Azure订阅,其中一些代码段不被Azure识别,这就是为什么我使用“InlineScript”来写下这些不被识别的代码段

这里的要点是,一旦我按照整个步骤准备和配置我的环境,使自动化成为可能,我就会得到一些与我的证书和东西相关的错误

我将在这里粘贴脚本的第一部分:

workflow testing2
{

}

测试此脚本时出现的错误是下一个错误:

2014年6月23日下午2:20:56,错误:Get-AzureVMAvailableExtension:否 已指定当前订阅。使用选择订阅 -Current可设置当前订阅。在测试2:19字符:19 + +CategoryInfo:CloseError:(:)[Get-AzureVMAvailableExtension],异常 +FullyQualifiedErrorId:Microsoft.WindowsAzure.Commands.ServiceManagement.IaaS.Extensions.GetAzureVMAvailableExtensionCommand 2014年6月23日下午2:20:56,错误:New AzureVMConfig:必须指定 MediaLocation或使用设置当前存储帐户 设置订阅。在测试2:19字符:19

正如我们所看到的,在这些错误中,我们注意到订阅存在一些问题

而是使用:

# Specify Azure Subscription Name
$subName = 'AzureConnection'

# Connect to Azure Subscription
Connect-Azure `
    -AzureConnectionName $subName

Select-AzureSubscription `
    -SubscriptionName $subName 
我试过使用set azuresubscription。。。但我也有类似的问题。我不知道我是否应该将set-azuresubscription与指定我的订阅并尝试与此建立连接的其他部分结合起来。。。(我是说,我写的最后一段代码)

所以。。。我怎样才能解决这个问题


提前感谢,希望我已经说清楚了。

我认为问题在于您在inlinescript之外调用Select AzureSubscription。Select AzureSubscription设置一个会话变量,以告知Azure cmdlet要连接到的订阅,并且runbook(PowerShell工作流)中的所有活动都在不同的会话中运行。解决方法是InlineScript,其中单个InlineScript中的所有内容都在PowerShell上下文中的同一会话中运行。因此,将Select AzureSubscription调用放入其中应将其置于正确的会话中

另外,Get-AzureVMAvailableExtension cmdlet似乎与Azure存储交互,因此需要您在订阅数据文件中设置Azure存储帐户。Connect Azure当前不为您执行此操作

以下是我认为有效的运行手册:

workflow testing2
{

    # Specify Azure Subscription Name
    $subName = 'AzureConnection'

    # Specify the Azure Storage Account to use
    $StorageAccountName = 'MyStorageAccount'

    # Connect to Azure Subscription
    Connect-Azure `
        -AzureConnectionName $subName

    InlineScript {

        Select-AzureSubscription `
            -SubscriptionName $Using:subName

        Set-AzureSubscription ` 
            -SubscriptionName $Using:subName ` 
            -CurrentStorageAccount $Using:StorageAccountName 

        # VM related variables

        $pwd = "xxxxxxxxx"
        $aun = "LrootA"
        $VMimage = "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201405.01-en.us-127GB.vhd"

        # CSExtension Version
        $CSEVersion = Get-AzureVMAvailableExtension | Where { $_.ExtensionName -like "*Custom*" } | Select Version
    }
}

我遇到了一个类似的问题,我得到的错误是:订阅“Subscription a”不存在,即使我在同一个脚本中定义了它

但是这不起作用,所以我创建了一个证书,并将其作为“资产”上传到右上角选项卡上的自动化手册中。然后添加此代码以引用我前面定义的assetname(证书)。我还为订阅ID和订阅名称创建了“字符串”值

因此,我的自动化脚本看起来像这样来选择订阅:

$subscriptionName=获取自动变量-名称“subscriptionName”

$subscriptionID=获取自动变量-名称“subscriptionID”

$certificateName=获取自动证书-名称“certificateName”

$storageaccount=获取自动变量-名称“storageaccount”

设置AzureSubscription-SubscriptionName$SubscriptionName-SubscriptionId$SubscriptionId-Certificate$certificateName 选择AzureSubscription$subscriptionName

祝你好运,希望这能帮助你或为你指明正确的方向。

以下是我发现非常有用的链接:

workflow testing2
{

    # Specify Azure Subscription Name
    $subName = 'AzureConnection'

    # Specify the Azure Storage Account to use
    $StorageAccountName = 'MyStorageAccount'

    # Connect to Azure Subscription
    Connect-Azure `
        -AzureConnectionName $subName

    InlineScript {

        Select-AzureSubscription `
            -SubscriptionName $Using:subName

        Set-AzureSubscription ` 
            -SubscriptionName $Using:subName ` 
            -CurrentStorageAccount $Using:StorageAccountName 

        # VM related variables

        $pwd = "xxxxxxxxx"
        $aun = "LrootA"
        $VMimage = "a699494373c04fc0bc8f2bb1389d6106__Windows-Server-2012-R2-201405.01-en.us-127GB.vhd"

        # CSExtension Version
        $CSEVersion = Get-AzureVMAvailableExtension | Where { $_.ExtensionName -like "*Custom*" } | Select Version
    }
}