Você está certo sobre o uso da automação. Essa é a melhor opção para iniciar automaticamente / encerrar VMs com base em uma programação. Se você tiver apenas algumas VMs para gerenciar, também há o recurso de desligamento automático em todas as VMs. Caso contrário, veja o link abaixo para mais detalhes. Essa abordagem torna as coisas um pouco mais fáceis para você, já que você não precisará criar um script do zero:
Iniciar / parar VMs durante a solução fora do horário (visualização) na Automação do Azure
Quanto à definição de cotas e limites, sua melhor opção é usar as Políticas do ARM do Azure. Você pode restringir quais tipos de recursos, tamanhos e SKUs podem ser implantados. Isso pode ser aplicado ao nível de assinatura ou ao nível do grupo de recursos.