@aral I'm sure there's reasons you ended up on this result. If you didn't come across it, you can base64 encode a command for PowerShell and pass it in via the -EncodedCommand to not have to worry about multiple levels of quoting through shells. I'm a little worried about the comment on spaces in paths, node should be able to handle them just fine.
A recommendation is to use spawnSync instead and pass in a proper argument array which will work around the need to spawn a shell and quoting issues