Unfortunately, this isn't entirely possible.
You can pass the list of selected files to your command like this...
powershell C:\tgit.ps1 !&
...but if no file is selected, this won't pass an empty string as you requested (but the file that is currently under the cursor). You can check if the list of selected files is equal to the file currently under the cursor and call your command without arguments in that case:
IF "!.!" == "!&" ( powershell C:\tgit.ps1 ) ELSE ( powershell C:\tgit.ps1 !& )
But now you'll call the variant without arguments if you select a single file and the cursor is also on that selected file. Although this is sort of an edge case, I can't think of a solution that meets your requirements completely.