Your query needs to include to sys.indexed_columns. Note that this will list the table more than once for tables with composite primary keys containing more than one uniqueidentifer column. Add DISTINCT to return the table only only once in that case.
SELECT
o.name AS TableName
, i.name AS IndexName
, c.name AS ColumnName
, i.type_desc
, i.is_primary_key
, TYPE_NAME(c.system_type_id) as Datatype
FROM sys.objects o
INNER JOIN sys.indexes i ON i.object_id = o.object_id
INNER JOIN sys.index_columns ic ON ic.object_id=i.object_id AND ic.index_id = i.index_id
INNER JOIN sys.columns c ON c.object_id=ic.object_id AND c.column_id = ic.column_id
WHERE
o.is_ms_shipped = 0
AND i.index_id = 1
AND i.is_primary_key = 1
AND c.system_type_id in ('36')
ORDER BY
o.name;