Я новичок в Powershell ... Надеюсь, вы мне поможете.
У меня есть скрипт, который обновляет базу данных (табличную модель) в Azure Analysis Services.Сценарий должен обновлять все таблицы, которые есть в модели, но не сразу, поэтому мы хотели бы сначала обновить все таблицы измерений параллельно, а затем - все таблицы фактов параллельно, как второй шаг.
Для этого мы используем командлет Invoke-ASCmd
, который вызывает код, жестко закодированный в переменной $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 и прикрепления его в качестве вложения к почте?Нам бы очень хотелось, чтобы это было в теле письма.
РЕДАКТИРОВАТЬ: я пытался преобразовать System.Collections.ArrayList, который я получаю из -OutVariable out
, в строку, используя различные методынапример:
- "Преобразовать"
$out
в $($out)
- Создано
$conv = $out.ToString()
- Пытался использовать
| Out-String
с командлетом Invoke-ASCmd
и с переменной $Message.Body
Ничего из вышеперечисленного не сработало.Тело электронной почты пусто.Я видел несколько статей о том, что команда OutVariable
дает список массива вместо строкового результата в версиях Powershell менее 6. Версия PS в Azure Analysis Services - 5.1, и ее, вероятно, нельзя обновить из-за совместимости.проблемы.
Заранее спасибо, Бартек