Check the system eventlog to see if there is an entry with more information about why the service did not start. Look in Services.msc. Is the service set to run as the system account? Does it need to run as some user account? If you try to start it from there, do you get a different error message?
In the Powershell code, add a Start-Transcript cmdlet to write to a log file. That will at least let you know that NSSM/Powershell is launching the script.
If you don't get a transcript, there must be something wrong calling Powershell. Download and run Process Monitor. Start the procmon capture, start the service, and then stop the capture. It will capture a lot of events. Then look for nssm.exe and powershell.exe and see if there are any access denied errors and if Powershell.exe is being launched with the correct parameters.