Как выбрать из описания только описание? - PullRequest
0 голосов
/ 11 марта 2019

Я запускаю следующую команду для обработки базы данных / и ее разделов.

Invoke-ASCmd –InputFile $file -Server $Server >$output

из вывода, если есть ошибка, вот что отображается:

<return xmlns="urn:schemas-microsoft-com:xml-analysis"><root xmlns="urn:schemas-microsoft-com:xml-analysis:empty"><Excep
tion xmlns="urn:schemas-microsoft-com:xml-analysis:exception" /><Messages xmlns="urn:schemas-microsoft-com:xml-analysis:
exception"><Error ErrorCode="-1055653884" Description="Either the dimension with the ID of &#39;0f585685&#39; does not exist in the database with the ID of &#39;&#39;, or the u
ser does not have permissions to access the object." Source="Microsoft SQL Server 2017 Analysis Services" HelpFile="" />
</Messages></root></return>

могу ли я извлечь часть description, так как она наиболее полезна?

Я хочу извлечь его, чтобы в нем содержались содержательные сообщения электронной почты с ошибками, которые можно было бы понять сразу, без необходимости поиска по всему другому XML-беспорядку

$Email_Body = Get-Content -Path $output | Out-String

По сути, электронная почта будет иметь:

Либо измерение с идентификатором '0f585685' не существует в базе данных с идентификатором '', либо у пользователя нет прав доступа к объекту.

также некоторые выходы иногда содержат несколько ошибок / описаний.

как бы я справился с этим?

например:

<return xmlns="urn:schemas-microsoft-com:xml-analysis"><root xmlns="urn:schemas-microsoft-com:xml-analysis:empty"><Exception xmlns="urn:schemas-microsoft-com:xml-analysis:exception" /><Messages xmlns="urn:schemas-microsoft-com:xml-analysis:exception"><Error ErrorCode="-1055784933" Description="[Teradata Database] [8017] The UserId, Password or Account is invalid.. The exception was raised by the IDbConnection interface." Source="Microsoft SQL Server 2017 Analysis Services" HelpFile="" /><Error ErrorCode="-1055784860" Description="A connection could not be made to the data source with the DataSourceID of &#39;&#39;, Name of &#39;Teradata &#39;." Source="Microsoft SQL Server 2017 Analysis Services" HelpFile="" /></Messages></root></return>

все описания могут быть сохранены как часть $Email_body и отправлены?поэтому в этом случае это будет:

[База данных Teradata] [8017] Недопустимый идентификатор пользователя, пароль или учетная запись. Исключение было вызвано интерфейсом IDbConnection.

Не удалось установить соединение с источником данных с DataSourceID, равным '', с именем 'Teradata'.

1 Ответ

2 голосов
/ 11 марта 2019

Вы можете захватить его как XML, а затем просто перейти к той части, которую хотите увидеть:

[xml]$Result = Invoke-ASCmd –InputFile $file -Server $Server
$Result.return.root.Messages.Error.description | Set-Content $output

Я предполагаю, что $output - это путь к файлу, который вы использовали в своем примере. Теперь все, что будет содержать $output, это соответствующие описания ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...