You can try adding -ErrorAction Continue, but it’s possible that the way the command is written won’t allow you to do what you want in a one-liner. In that case, you’d get the computers, ForEach through them, and do one at a time. The way when one fails, you’ll just loop around and try the next one. That’s actually a much more common pattern since it would let you capture errors and, for example, log failures for later retry. “Learn PowerShell Scripting in a Month of Lunches” uses that pattern extensively in its running examples.
You’re already doing a ForEach inside Get-EventLog, you just don’t see it. And no, there’s not going to be another way. Well, I mean, you could use Invoke-Command or something, I suppose, but it’s going to amount to the same thing unless you can use Remoting. There’s always going to be a loop, it’s just whether or not you see it or not.