Powershell Get-Service cmdlet can help you get the status of a service. You can then use Add-PIValue to add the status into a tag. You will need to schedule the script to run at an interval that you desire.
That doesn't seem like a good idea. For instance, if PISNAPSS is stopped, you won't be able to write to PI to indicate PISNAPS is Stopped.
Unless you want to write it to a different PI Server, of course.
I would recommend monitoring PerfMon counters (e.g. Elapsed Time of the processes you want to monitor) instead.
If you are using Powershell to write the service status to PI tags or are using the PI Perfmon interface to collect values to that indicate PI service health, the important thing to remember is that the tags will stop updating if key PI services fail. If you are planning on using an external system that then monitors these tags and send alerts, I would recommend adding a check that the timestamp for the tag is still updating.