Azure Powershell Runbook - Get-AzureRMWebAppSlot SiteConfig.ConnectionStrings[0] 错误无法索引到空数组
Posted
技术标签:
【中文标题】Azure Powershell Runbook - Get-AzureRMWebAppSlot SiteConfig.ConnectionStrings[0] 错误无法索引到空数组【英文标题】:Azure Powershell Runbook - Get-AzureRMWebAppSlot SiteConfig.ConnectionStrings[0] erroring cannot index into a null array 【发布时间】:2017-07-01 14:41:17 【问题描述】:我正在尝试在 PowerShell 工作流运行手册中执行以下命令。我收到错误“无法索引到空数组。”,这是不正确的,因为在我的本地计算机上完美运行的同一脚本在 Azure 门户中作为 PowerShell 工作流运行手册没有执行。
有人可以调查一下吗?
$webApp = Get-AzureRMWebAppSlot -ResourceGroupName $ResourceGroupName -Name $WebSiteName -Slot $WebSiteSlot
$webApp
"Printing Website ConncectionString"
$webApp.SiteConfig.ConnectionStrings.ConnectionString[0]
【问题讨论】:
你能确认$webapp
里面确实有数据而不是$null
吗?
是的,我更新了问题以解决这个问题。 @4c74356b41
请注意,我在将此脚本作为工作流执行时特别遇到了这个问题。如果我在没有工作流的情况下运行相同的脚本,一切都可以正常工作。但我需要工作流来向脚本提及参数并安排执行。
【参考方案1】:
某些类型不能正确序列化/反序列化,在 PowerShell 工作流中这是一个问题,因为 PowerShell 工作流依赖于对象序列化/反序列化(这就是 PSWF 能够检查点、挂起和恢复的方式——它将所有对象转换为检查点/挂起时的字符串形式,并在恢复时从这些字符串恢复为完整对象)。
看起来Get-AzureRMWebAppSlot
的输出对象是不能正确序列化/反序列化的类型之一。从您的屏幕截图中,我可以看到$webApp
的SiteConfig
属性是一个包含Microsoft.Azure.Management.WebSites.Model.SiteConfig
的字符串,而不是您期望的对象。显然,对象没有正确反序列化回其原始形式,其中SiteConfig
是一个复杂对象。
解决此问题的方法是仅与 PowerShell 脚本上下文中的对象交互,而不是工作流上下文。例如:
workflow foo
$ResourceGroupName = "RG"
$WebSiteName = "WS"
$WebSiteSlot = "Slot"
$ConnectionString = InlineScript
$webApp = Get-AzureRMWebAppSlot -ResourceGroupName $using:ResourceGroupName -Name $using:WebSiteName -Slot $using:WebSiteSlot
$webApp.SiteConfig.ConnectionStrings.ConnectionString[0]
"Printing Website ConnectionString"
$ConnectionString
【讨论】:
以上是关于Azure Powershell Runbook - Get-AzureRMWebAppSlot SiteConfig.ConnectionStrings[0] 错误无法索引到空数组的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PowerShell Runbook 在 azure blob 存储上创建文本文件?
Azure自动化| Runbook | Powershell | Get-AzRoleAssignment | Microsoft.Rest.Azure.CloudException
通过 powershell 和 Azure Runbook 与个人联系人同步交换中的全局地址列表
Azure Powershell Runbook - Get-AzureRMWebAppSlot SiteConfig.ConnectionStrings[0] 错误无法索引到空数组