Debes ejecutar ambos comandos en PowerShell ya que Powershell es más que capaz de manipular las variables del entorno.
Es decir..:
$dow = (get-date).dayofweek
[Environment]::SetEnvironmentVariable("DOW", $dow, "Machine")
o
[Environment]::SetEnvironmentVariable("DOW", $dow, "User")
Por cierto, tu script no funciona porque lo único que obtienes es el código de retorno de Powershell, no los datos que produce. Puede que haya una forma de hacer que funcione, pero al final no tiene sentido si lo comparamos con el uso de un Powershell adecuado script.
Para completar, aquí hay un buen artículo de la EM sobre la cáscara de poder y las variables ambientales:
http://technet.microsoft.com/en-us/library/ff730964.aspx
Actualizar: Habiendo revisado esta solución con @syneticon-dj en el chat, parece que el problema al que se enfrenta con este método es que una línea de comandos tiene que ser recargada antes de que refleje los cambios en las variables ambientales que han ocurrido externamente.
No has dado muchos detalles sobre lo que estás haciendo, pero si esta es la única razón por la que estás lanzando Powershell, entonces mi sugerencia sería revisar cómo estás haciendo las cosas.
¿O bien todo el proceso se realiza con PowerShell o ha considerado usar tareas programadas en su lugar? Puede programar tareas basadas en el día de la semana.