Write-CommandSplatter.ps1
function Write-CommandSplatter { [CmdletBinding(DefaultParameterSetName="Name")] param( [Parameter(ParameterSetName='Command',Mandatory=$true,ValueFromPipeline=$true)] [Management.Automation.CommandInfo] $Command, [Parameter(ParameterSetName='Name',Position=0,Mandatory=$true)] [String] $Name ) process { if ($psCmdlet.ParameterSetName -eq "Command") { $Name = $Command.Name $NameWithoutDashes = $Name.Replace("-","") } else { $NameWithoutDashes = $Name.Replace("-","") } @" `$${NameWithoutDashes}Parameters = @{} foreach (`$parameterName in ((Get-Command $Name | Select-Object -First 1)).Parameters.Keys) { `$variable = Get-Variable -Name `$parameterName -ErrorAction SilentlyContinue if (`$variable -ne `$null -and `$variable.Value) { `$null = `$${NameWithoutDashes}Parameters.Add(`$parameterName, `$variable.Value) } } $Name @${NameWithoutDashes}Parameters "@ } } |