Usuário com melhor resposta
Buscar valores de CSV em scripts PowerShell

Pergunta
-
Pessoal, bom dia.
Estou iniciando alguns estudos com PowerShell e surgiu uma demanda de cliente para automatizar a inativação e ativação de tarefas no Task Scheduler. Até ai tudo tranquilo, utilizei o comando abaixo:
PS C:\> Disable-ScheduledTask -TaskName "Nome"
Acontece que o número de tarefas vem aumentando e ficou muito trabalhoso atualizar o script, dessa forma gostaria de criar algo que buscasse em um csv as tarefas que devem ser desabilitadas e habilitadas.
Alguém já fez ou sabe se é possível?
Respostas
-
Olá.
Um dos jeitos de se fazer seria mais ou menos como se segue:
Considere um xml com a seguinte estrutura e nome "programas.xml" (usei o termo serviço e programas, mas fica ao seu critério):
Considere (mais ou menos) o seguinte script para executar o comando para cada serviço contido na lista:
https://inframicrosoft.wordpress.com/
- Editado J. Maurício terça-feira, 29 de maio de 2018 17:18
- Marcado como Resposta Lucas Wilox domingo, 3 de junho de 2018 17:38
Todas as Respostas
-
Olá.
Um dos jeitos de se fazer seria mais ou menos como se segue:
Considere um xml com a seguinte estrutura e nome "programas.xml" (usei o termo serviço e programas, mas fica ao seu critério):
Considere (mais ou menos) o seguinte script para executar o comando para cada serviço contido na lista:
https://inframicrosoft.wordpress.com/
- Editado J. Maurício terça-feira, 29 de maio de 2018 17:18
- Marcado como Resposta Lucas Wilox domingo, 3 de junho de 2018 17:38
-
J Mauricio, obrigado pela resposta.
Não entendi a necessidade do "Path" e "Versão".
Não sei se entendeu meu objetivo, mas o que quero é basicamente que o script busque em algum arquivo o nome dos serviços e algum valor que referencie o status que ele deve ficar. Ex: 1 para ativo e 0 para inativo.
Ficou claro?
-
-
J. Mauricio, muito obrigado pelas respostas.
Entendi perfeitamente seu script, inclusive fui testando algumas opções e consegui algo bem bacana:
[xml]$XmlDocument = Get-Content .\schedules.xml
$XmlDocument.GetType().FullName
foreach ($servico in $XmlDocument.schedules.ChildNodes) {
If ($servico.status -eq 1) {
Enable-ScheduledTask -TaskName $servico.nome
} Else {
Disable-ScheduledTask -TaskName $servico.nome
}
}E no xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<schedules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<servico>
<nome>TSK1</nome>
<status>1</status>
</servico>
<servico>
<nome>TSK2</nome>
<status>0</status>
</servico>
<servico>
<nome>TSK3</nome>
<status>1</status>
</servico>
<servico>
<nome>TSK4</nome>
<status>0</status>
</servico>
</schedules>Com isso consigo fazer com que só alterando o status de cada rotina no xml, ao executar o script ele altere o status no Task Scheduler (0 = desativa rotina e 1= ativa rotina).
-