It really sounds like you need to schedule a task to run the script 3 times a day as needed.
As far as getting the data out of Excel and into PowerShell I highly recommend utilizing a function from the MS Script Depot, Import-Xls (see http://gallery.technet.microsoft.com/scriptcenter/17bcabe7-322a-43d3-9a27-f3f96618c74b). The script is harmless, it seriously just loads the Excel doc you specify, asks Windows for an available temporary file name and then does a Save As to that name as a CSV file. Then it imports that CSV into PowerShell for you, and closes down Excel and performs a garbage collection routine.
The alternative is to do it all from the Excel ComObject and that's just ugly and more difficult than is needed. So, assuming you have a spreadsheet with headers Name, Email, and Shift (using A, B, or C for shift) what you probably want is something along the lines of:
Function Import-Xls {PASTED IN FROM SCRIPT REFERENCED ABOVE}
Switch((get-date).Hour){
{($_ -ge 8) -and ($_ -lt 16)}{$Shift = "A"}
{$_ -ge 16}{$Shift = "B"}
{$_ -lt 8}{$Shift = "C"}}
$Schedule = Import-Xls "C:\Users\Public\Desktop\Schedule.xlsx"
$CurrentWorkers = $Schedule|?{$_.Shift -eq $Shift}|Select Name
$Schedule|?{$_.Shift -eq $Shift}|%{send-mailmessage -to "$($_.Name) <$($_.email)>" -from "Management <[email protected]>" -subject "Shift listing for $(get-date -format M/d/yy) shift $Shift" -body $CurrentWorkers -smtpserver smtp.ourcompany.com}
So if that is run between 8AM and 4PM it assumes it is for Shift A (4PM to Midnight for B, and Midnight to 8AM for C), loads the Excel file, figures out who is on that shift, and sends them all an email who's body is simply a list of the people on that shift. More formatting or sending the mail through Outlook or something would be more work, but doable. This does also assume you have a SMTP server available to use. It at least covers how to get the data into PowerShell and how to make it automate picking a shift and select who to send mail to.