我是Powershell的新手,希望您能为我提供帮助。
我有一个脚本,用于刷新Azure Analysis Services上的数据库(表格模型)。该脚本应该刷新模型中所有的表,但不能一次刷新,因此我们希望首先并行刷新所有维度表,然后刷新所有事实表,作为第二步。
为此,我们使用Invoke-ASCmd
cmdlet,该cmdlet调用变量$DataLoad
中的硬编码代码,它看起来像这样:
Invoke-ASCmd -Server $AASServerAddress -Query $DataLoad -Credential $AzureCred -OutVariable out
输出是一个xml字符串,如果刷新一切顺利,则看起来像这样:
<return xmlns="urn:schemas-microsoft-com:xml-analysis">
<root xmlns="urn:schemas-microsoft-com:xml-analysis:empty"></root>
</return>
,如果有问题,它将向我提供错误详细信息。 脚本完成后,它将向电子邮件发送一些信息,其中包含脚本在正文中完成的信息。
我想要的是将Invoke-ASCmd
输出到电子邮件正文。我试图玩OutVariable
和ToString()
,但它给了我"System.Collections.ArrayList"
的身分和Write-Output
的结果。
另一方面,我只是试图将$out
变量放到正文中,但是它没有出现在电子邮件中,但是当我执行Write-Output $out
时-在脚本的输出中显示。
是否有机会在不将xml文件保存到Azure存储并将其作为附件附加到邮件的情况下正常工作?我们真的很想将其包含在电子邮件正文中。
编辑:我尝试使用各种方法将从-OutVariable out
中获取的System.Collections.ArrayList转换为字符串:
$out
”转换为$($out)
$conv = $out.ToString()
| Out-String
与Invoke-ASCmd
cmdlet和$Message.Body
变量一起使用以上任何方法均无效。电子邮件正文为空。我已经看到一些文章,在Powershell版本低于6的情况下,OutVariable
命令给出的是数组列表而不是字符串结果。AzureAnalysis Services上的PS版本是5.1,由于以下原因,它可能无法更新:兼容性问题。
预先感谢您, Bartek