Why does a fresh SQL Server instance with the same details as the original think that my DB backup is in the original location?
The .\ is not interpreted in the Query parameter as 'current directory' and so SQL looks for the file in its default backup location. You have a couple of options


Change the Query value and specify the full path to the file
Pass a variable into the Query string (see below)


Option 1 is the simplest, but you may have need of using variables elsewhere, so here's an example:

$StrArray = "VAR1='C:\Temp\db-name.bak'"
invoke-sqlcmd -query "RESTORE HEADERONLY FROM DISK = `$(VAR1)" -Variable $StrArray


$StrArray is an array of strings that take the form Variable Name='Variable Value' and each is substituted in your query string at run time.

Invoke-SqlCmd