1

我是Powershell的新手......希望你能帮助我。
我有一个在 Azure Analysis Services 上刷新数据库(表格模型)的脚本。该脚本应该刷新我们在模型中拥有的所有表,但不是一次刷新,因此我们希望首先并行刷新所有维度表,然后作为第二步并行刷新所有事实表。

为此,我们使用Invoke-ASCmdcmdlet 调用硬编码在变量中的代码$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我试图与and一起玩ToString(),但它给了我"System.Collections.ArrayList"在 body 和 as 中的结果Write-Output

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

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

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

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

以上任何一项都不起作用。电子邮件正文为空。我看过一些文章,OutVariable命令给出数组列表而不是字符串导致 Powershell 版本小于 6。Azure 分析服务上的 PS 版本是 5.1,它可能由于兼容性问题而无法更新。

提前谢谢你,巴特克

4

1 回答 1

0
[xml]$Result = Invoke-ASCmd –InputFile $file -Server $Server
$emailmsg = $Result.return.root.Messages.Error.description

$emailmsg'
于 2021-11-24T16:17:25.753 回答