Я нашел решение самостоятельно.
Сначала я добавил условие в задачу «Сообщение». Таким образом, строки фильтруются. Печатаются только строки, которые указывают на ошибку.
Во-вторых, я заменил задачу CreateProperty. Сейчас я использую PropertyGroup для создания свойства, которое содержит все строки (не совсем то, что я хотел изначально, но оно работает для меня вместе со следующим пунктом).
И в-третьих, я изменил условие ошибки. Я проверяю, произошла ли во всем тексте ошибка.
<Target Name="CheckLog">
<PropertyGroup>
<ErrorText>ERR</ErrorText>
</PropertyGroup>
<ReadLinesFromFile File="execution.log" >
<Output TaskParameter="Lines" ItemName="FileContents" />
</ReadLinesFromFile>
<Message Text="%(FileContents.Identity)" Condition="$([System.String]::Copy('%(FileContents.Identity)').StartsWith($(ErrorText)))" />
<PropertyGroup>
<AllLines>@(FileContents)</AllLines>
</PropertyGroup>
<Error Condition="$(AllLines.Contains($(ErrorText)))" Text="Execution returned with an error." />
</Target>