Don't put any quotes around $webhookJson.
Invoke-WebRequest -Method POST -ContentType 'Application/Json' -Body $webhookJson -Uri $TeamsChannel
You have 2 sets of single quotes around $webhook in your first post. That is invalid.
In your second post you first show double quotes around the variable, which should work, but then you show single quotes which will not expand the variable contents.
Paste this into Powershell_ISE to see.
cls
$var = "Hello"
'Single quotes do NOT expand variables: $var'
"Double quotes do expand variables: $var"
'''3 single quotes are needed to put one single quote around the data: $var'''
"""3 double quote are needed to put one double quote around the expanded data: $var"""
Just type in $var to see it's contents. Do the same with $webhookJson.
Here is a good reference,
[https://www.sapien.com/books_training/Windows-PowerShell-4