Você deve executar os dois comandos no PowerShell, pois o PowerShell é mais do que capaz de manipular variáveis ambientais.
Ou seja:
$dow = (get-date).dayofweek
[Environment]::SetEnvironmentVariable("DOW", $dow, "Machine")
ou
[Environment]::SetEnvironmentVariable("DOW", $dow, "User")
A propósito, seu script não funciona porque tudo o que você recebe é o código de retorno do PowerShell, não os dados que ele produz. Pode haver uma maneira de fazê-lo funcionar, mas, em última análise, é inútil comparado ao uso de um script do PowerShell adequado.
Para completar, aqui está um bom artigo da Microsoft no PowerShell e variáveis ambientais:
Criando e modificando variáveis de ambiente
Atualização: Depois de revisar esta solução com @ syneticon-dj no chat, parece que o problema que você enfrenta usando esse método é que um prompt de comando deve ser recarregado antes de refletir as alterações nas variáveis ambientais que ocorreram externamente.
Você não forneceu muitos detalhes sobre o que está fazendo, mas se esse é o único motivo pelo qual você está lançando o PowerShell, minha sugestão real seria revisar como você está fazendo as coisas.
Todo o seu processo usando o PowerShell ou você já pensou em usar tarefas agendadas? Você pode agendar tarefas com base no dia da semana.