调用ASCmd cmdlet输出到电子邮件正文

时间:2018-10-10 07:47:26

标签: powershell azure-analysis-services

我是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输出到电子邮件正文。我试图玩OutVariableToString(),但它给了我"System.Collections.ArrayList"的身分和Write-Output的结果。

另一方面,我只是试图将$out变量放到正文中,但是它没有出现在电子邮件中,但是当我执行Write-Output $out时-在脚本的输出中显示。

是否有机会在不将xml文件保存到Azure存储并将其作为附件附加到邮件的情况下正常工作?我们真的很想将其包含在电子邮件正文中。

编辑:我尝试使用各种方法将从-OutVariable out中获取的System.Collections.ArrayList转换为字符串:

  1. 将“ $out”转换为$($out)
  2. 创建了$conv = $out.ToString()
  3. 试图将| Out-StringInvoke-ASCmd cmdlet和$Message.Body变量一起使用

以上任何方法均无效。电子邮件正文为空。我已经看到一些文章,在Powershell版本低于6的情况下,OutVariable命令给出的是数组列表而不是字符串结果。AzureAnalysis Services上的PS版本是5.1,由于以下原因,它可能无法更新:兼容性问题。

预先感谢您, Bartek

0 个答案:

没有答案