Escaping splatted variables in Powershell Invoke-Expression
You need to double escape, because you are going through two levels of interpretation. Only one ` will not work because it get parsed during the string creation.
Invoke-Expression "bcompare ``@static.diff"
Or as Joey said.
Invoke-Expression "bcompare '@static.diff'"
bcompare '@static.diff'
If in doubt, put it into a string :-)
PS Home:\> args '@static.diff'
argv[0] = "C:\Users\Joey\Batches\args.cmd"
argv[1] = @static.diff