我试图在PowerShell工作流程Runbook中执行以下命令。我收到错误"无法索引到空数组。",这是不正确的,因为在Azure门户中作为PowerShell执行在本地计算机上完美运行的相同脚本没有执行工作流程Runbook。
任何人都可以看看这个吗?
$webApp = Get-AzureRMWebAppSlot -ResourceGroupName $ResourceGroupName -Name $WebSiteName -Slot $WebSiteSlot
$webApp
"Printing Website ConncectionString"
$webApp.SiteConfig.ConnectionStrings.ConnectionString[0]
答案 0 :(得分:1)
某些类型没有正确序列化/反序列化,并且在PowerShell工作流中这是一个问题,因为PowerShell Workflow依赖于对象序列化/反序列化(这就是PSWF能够检查点,挂起和恢复的方式 - 它将所有对象转换为检查点/挂起时的字符串形式,并在恢复时从这些字符串恢复为完整对象。)
看起来Get-AzureRMWebAppSlot
的输出对象是那些没有正确序列化/反序列化的类型之一。从您的屏幕截图中我可以看到SiteConfig
的{{1}}属性是一个包含$webApp
的字符串,而不是您期望的对象。显然,该对象没有正确地反序列化回原始形式,其中Microsoft.Azure.Management.WebSites.Model.SiteConfig
是一个复杂的对象。
解决此问题的方法是仅与PowerShell脚本上下文中的对象进行交互,而不是与工作流上下文进行交互。例如:
SiteConfig