Вывод командлета Invoke-ASCmd в тело письма - PullRequest
0 голосов
/ 10 октября 2018

Я новичок в 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, в строку, используя различные методынапример:

  1. "Преобразовать" $out в $($out)
  2. Создано $conv = $out.ToString()
  3. Пытался использовать | Out-String с командлетом Invoke-ASCmdи с переменной $Message.Body

Ничего из вышеперечисленного не сработало.Тело электронной почты пусто.Я видел несколько статей о том, что команда OutVariable дает список массива вместо строкового результата в версиях Powershell менее 6. Версия PS в Azure Analysis Services - 5.1, и ее, вероятно, нельзя обновить из-за совместимости.проблемы.

Заранее спасибо, Бартек

...