I don't think there will be any way to send the output from the cloud to your machine. A possible workaround is to run your script locally, but have it call CloudEvaluate. Here's my script that does this, and then copies the file from the cloud to my local machine. Not beautiful, but it works.
#!wolframscript
CloudConnect["chadk@wolfram.com","xxxx"];
CloudEvaluate[Export[CloudObject["testplot.png"],Graphics3D[Sphere[]],"PNG"]];
CopyFile[CloudObject["testplot.png"],"localttestplot.png"];
Print["all done!"];
Or you could have a 2nd script that calls CopyFile the output from your first script. But that seems even worse.
I also can reproduce the Windows issue. For some reason the single quotes don't work in Windows. If you open the png file with a text editor, you'll see an error message: ToExpression::sntx: Invalid syntax in or before "'Graphics3D[Sphere[]]'". It works without the single quotes:
wolframscript -code Graphics3D[Sphere[]] -format PNG > file.png
Note: note space between the brackets.