DECLARE @TableName VARCHAR(20) = NULL

SELECT	[SchemaName]		= SCH.name,
		[TableName]			= TBL.name,
		[IndexName]			= INX.name,  
		[KeyColumnList]		= STUFF((	SELECT  ', ' + CDC.name + ' ' + CASE WHEN IDC.is_descending_key = 1 THEN 'DESC' ELSE 'ASC' END
									FROM    sys.tables AS T
											INNER JOIN sys.indexes IDX
												ON	T.object_id = IDX.object_id
											INNER JOIN sys.index_columns IDC
												ON	IDX.object_id = IDC.object_id AND 
													IDX.index_id = IDC.index_id
											INNER JOIN sys.columns CDC
												ON	T.object_id = CDC.object_id AND
													IDC.column_id = CDC.column_id
									WHERE   IDX.object_id = INX.object_id AND
											IDX.index_id = INX.index_id AND
											IDC.is_included_column = 0 
									ORDER	BY IDC.key_ordinal
									FOR		XML PATH('')), 1, 2, ''),
		[IncludeColumnList] = STUFF(( SELECT  ', ' + CDC.name
									FROM    sys.tables AS T
											INNER JOIN sys.indexes IDX
												ON	T.object_id = IDX.object_id
											INNER JOIN sys.index_columns IDC
												ON	IDX.object_id = IDC.object_id AND
													IDX.index_id = IDC.index_id
											INNER JOIN sys.columns CDC
												ON	T.object_id = CDC.object_id AND
													IDC.column_id = CDC.column_id
									WHERE   IDX.object_id = INX.object_id AND 
											IDX.index_id = INX.index_id AND
											IDC.is_included_column = 1
									ORDER BY IDC.key_ordinal
									FOR XML PATH('')), 1, 2, ''),
		[IsDisabled]		= INX.is_disabled,
		[IsUnique]			= INX.is_unique
FROM	sys.indexes INX
			INNER JOIN sys.tables TBL
				ON	TBL.object_id = INX.object_id
			INNER JOIN sys.schemas SCH
				ON	SCH.schema_id = TBL.schema_id
WHERE	TBL.is_ms_shipped = 0 AND 
		(TBL.name = @TableName OR @TableName IS NULL) AND
		INX.type_desc IN ('NONCLUSTERED', 'CLUSTERED')
OPTION (FORCE ORDER)