Debe ejecutar ambos comandos en PowerShell ya que PowerShell es más que capaz de manipular variables ambientales.
Es decir:
$dow = (get-date).dayofweek
[Environment]::SetEnvironmentVariable("DOW", $dow, "Machine")
o
[Environment]::SetEnvironmentVariable("DOW", $dow, "User")
Por cierto, su script no funciona porque todo lo que obtiene es el código de retorno de PowerShell, no los datos que produce. Puede haber una manera de hacer que funcione, pero en última instancia no tiene sentido en comparación con solo usar un script de PowerShell adecuado.
Para completar, aquí hay un buen artículo de Microsoft sobre PowerShell y variables ambientales:
Crear y modificar variables de entorno
Actualización: Después de revisar esta solución con @ syneticon-dj en el chat, parece que el problema que enfrenta al usar este método es que se debe volver a cargar un símbolo del sistema antes de que refleje los cambios en las variables ambientales que se han producido externamente.
No ha proporcionado muchos detalles sobre lo que está haciendo, pero si esta es la única razón por la que está iniciando PowerShell, mi sugerencia real sería revisar cómo está haciendo las cosas.
¿Su proceso completo usa PowerShell o ha considerado usar tareas programadas? Puede programar tareas según el día de la semana.