Just looking at the syntax I would think you don’t want to pipe to Format-List if you are going to pass the objects to pipe the objects to Write-SqlTableData. Format-List will change the objects to format type objects and is usually used for display on the screen not to pipe to other commands.
By “output you would like”, do you mean what is displayed on the screen? When you run a command like Get-WmiObject -Class “Win32_computersystem” objects are returned but only select properties are displayed to the screen, but that does not mean other properties are not present. If you pipe the command to Get-Member you will see all the possible properties. Format-List * is just a way to display all the properties * in a list format. In doing so though it is now creating different object types than what was originally returned. If you run Get-WmiObject -Class “Win32_computersystem” | Get-Member and then run Get-WmiObject -Class “Win32_computersystem” | format-List * | Get-Member you will see the difference.
I’ve not used this cmdlet to write SQL data, but I’m not sure what it would do if you give it more data than the table schema. I would recommend removing the Invoke-Command and using Select-Object to send properties that match your table schema for testing: