function gcms { param ([string[]]$Name) Get-Command -Name $Name -Syntax }
Register-ArgumentCompleter -CommandName gcms -ParameterName Name -ScriptBlock {
	param ($commandName, $parameterName, $wordToComplete, $commandAst, $fakeBoundParameter)

	Get-Command -Name $wordToComplete* | % Name
}

function Get-CommandDefinition([string[]]$Name) { (gcm $Name).Definition }

function syntax {
	param (
		[ArgumentCompleter({
			param ($commandName, $parameterName, $wordToComplete)
			Get-Command -Name $wordToComplete* | % Name
		})]
		[string[]]$Name
	)
	(Get-Command -Name $Name -Syntax) -replace ' (?=\[-\w+( <.+>)?\] \[)', "`n`t" -replace ' \[<CommonParameters>\]'
}

function Get-CommandDefinition([string[]]$Name) { (gcm $Name).Definition }

Replace function gcms with syntax
Replace function gcms with syntax

gcms is likely to be used as an alias for some commands.
For example, Get-CimSession
