Você precisa usar SQL dinâmico para implementar isso, porque a DDL está sendo avaliada para cada banco de dados, independentemente da verificação, mas não é executada por causa da verificação.
set quoted_identifier on
EXEC sp_msforeachdb "
IF '?' not in ('tempdb')
begin
exec ('ALTER DATABASE [?] SET RECOVERY SIMPLE;')
print '?'
end
"