Schtasks de consulta usando o Powershell

8

Em uma máquina Windows7 que estou tentando, posso executar uma consulta para visualizar todas as tarefas agendadas usando schtasks.exe

Isso é bom, mas eu também gostaria de filtrar o conjunto de resultados usando algo como

schtasks /query | where { $_.TaskName -eq "myTask" } 

O problema é que eu não faço isso schtasks retorna uma lista devidamente formatada para a função where para trabalhar.

Eu também tentei:

schtasks /query /FO LIST
schtasks /query | format-list | where ....

esses não funcionam também.

Qual seria a melhor maneira de consultar os schtasks em um computador local usando o Win7 e ser capaz de filtrá-los

    
por jdiaz 18.06.2010 / 21:09

6 respostas

8

Você pode tentar usar schtasks, o que vai deixar você analisando o texto. Isso é quase sempre propenso a erros e definitivamente mais difícil do que a saída de um comando.

Por acaso, existe um módulo TaskScheduler no PowerShellPack . Depois de instalar o pacote do PowerShell, para obter todas as tarefas agendadas, use:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Como esses são objetos reais, para localizar uma tarefa de um nome específico, você pode usar:

Get-ScheduledTask -Recurse |  Where-Object { $_.Name -like "*Task*"}

Em geral, você descobrirá que a comunidade do PowerShell usou muito mais as linhas de comando, como schtasks, e as transformou em cmdlets fáceis de usar, como o Get-ScheduledTask.

Veja também:

Enviando e-mails automatizados usando o módulo TaskScheduler

Espero que isso ajude

    
por 18.06.2010 / 23:44
2

se você não precisa fazer isso em powershell, então o seguinte irá funcionar

schtasks / query | findstr / i "mytask"

versão ps
schtasks / query | ? {$ _ -like 'mytask'}

    
por 18.06.2010 / 21:32
2

Aqui está uma postagem no blog que escrevi sobre como fazer isso. Essencialmente, peguei a saída do / FO LIST / V, escrevi isso para um arquivo, e o importei de volta como objetos usando o import-csv

    
por 18.06.2010 / 21:26
2

Você pode tentar:

schtasks /query /FO CSV | ConvertFrom-CSV | Where { $_.TaskName -eq "myTask" } 

O truque está em converter a saída para CSV primeiro e depois de volta para um objeto PowerShell.

    
por 01.10.2014 / 20:50
0

Você está pensando demais sobre isso.

Linha de comando para o que você deseja schtasks / query / s% nome_do_computador% | FIND / I "% name_of_task%"

exemplo schtasks / query / s server01 | FIND / I "agenda"

    
por 22.09.2010 / 21:16
-2

As melhores opções são de Alex porque você não precisa de biblioteca e você irá converter as respostas da string de schtasks no objeto Powershell.

    
por 06.12.2016 / 16:18