none
Buscar valores de CSV em scripts PowerShell RRS feed

  • 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?

    terça-feira, 29 de maio de 2018 14:11

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
    terça-feira, 29 de maio de 2018 17:18

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
    terça-feira, 29 de maio de 2018 17:18
  • 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?

    sexta-feira, 1 de junho de 2018 17:51
  • Olá.

    Não é necessário. Foi só como exemplo. Como está estudando, achei que gostaria de explorar as possibilidades.


    https://inframicrosoft.wordpress.com/

    sábado, 2 de junho de 2018 20:31
  • 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).

    domingo, 3 de junho de 2018 17:38
  • Fico feliz que deu certo. Bons estudos.

    https://inframicrosoft.wordpress.com/

    segunda-feira, 4 de junho de 2018 11:20