Em uma máquina Windows7, estou tentando 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 formatada corretamente para a função where funcionar.
Eu também tentei:
schtasks /query /FO LIST
schtasks /query | format-list | where ....
aqueles também não funcionam.
Qual seria a melhor maneira de consultar as schtasks em um computador local usando o Win7 e poder filtrá-las
schtasks
espera por lá, mas sim uma barra.Respostas:
Você pode tentar usar schtasks, o que o deixará analisar o texto. Isso quase sempre é propenso a erros e, definitivamente, mais difícil do que obter a saída de um comando.
Acontece que existe um módulo TaskScheduler no PowerShellPack . Depois de instalar o pacote do PowerShell, para obter todas as tarefas agendadas, use:
Como esses são objetos reais, para encontrar uma tarefa com um nome específico, você pode usar:
Em geral, você descobrirá que a comunidade do PowerShell tornou muito mais difícil o uso de linhas de comando, como schtasks, e as transformou em cmdlets fáceis de usar, como Get-ScheduledTask.
Veja também:
Enviando emails automatizados usando o módulo TaskScheduler
Espero que isto ajude
fonte
se você não precisar fazer isso no PowerShell, o seguinte funcionará
schtasks / query | findstr / i "mytask"
versão ps
schtasks / query | ? {$ _ -como 'mytask'}
fonte
Aqui está um post que escrevi sobre isso. Essencialmente, peguei a saída do / FO LIST / V, escrevi isso em um arquivo e importei-o novamente como objetos usando import-csv
fonte
schtasks /query /fo csv /v|convertfrom-csv
funciona muito bemschtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}
fornecerão todas as tarefas agendadas personalizadas que você tiver.Você pode tentar:
O truque consiste em converter a saída em CSV primeiro e depois voltar a um objeto do PowerShell.
fonte
Você está pensando demais.
Linha de comando para o que você deseja schtasks / query / s% nomedocomputador% | FIND / I "% name_of_task%"
exemplo schtasks / query / s server01 | FIND / I "agendamento"
fonte
As melhores opções são do Alex, porque você não precisa de biblioteca e converterá as respostas da string de schtasks no objeto Powershell.
fonte