Thank you for posting this nice little script.
I've just found one little issue when running in my environment.
I call named instances 'MSSQLSERVER1', 'MSSQLSERVER2' etc.
When running your script the result in the 'SQLServerInstance column is 'default1', 'default2' etc.
A solution to replace instancename on the default instane only, could be using CASE instead of REPLACE:
,SQLServerInstance =
CASE InstanceName
WHEN 'MSSQLSERVER' THEN 'default'
ELSE InstanceName
END
// Christian