我是Powershell的新手......希望你能帮助我。
我有一个在 Azure Analysis Services 上刷新数据库(表格模型)的脚本。该脚本应该刷新我们在模型中拥有的所有表,但不是一次刷新,因此我们希望首先并行刷新所有维度表,然后作为第二步并行刷新所有事实表。
为此,我们使用Invoke-ASCmd
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
我试图与and一起玩ToString()
,但它给了我"System.Collections.ArrayList"
在 body 和 as 中的结果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
变量一起使用
以上任何一项都不起作用。电子邮件正文为空。我看过一些文章,OutVariable
命令给出数组列表而不是字符串导致 Powershell 版本小于 6。Azure 分析服务上的 PS 版本是 5.1,它可能由于兼容性问题而无法更新。
提前谢谢你,巴特克