En una máquina con Windows 7 que estoy intentando, puedo ejecutar una consulta para ver todas las tareas programadas usando schtasks.exe
Esto está bien, pero también me gustaría filtrar el conjunto de resultados usando algo como
schtasks /query | where { $_.TaskName -eq "myTask" }
El problema es que no estas tareas devuelven una lista con el formato adecuado para la función where para trabajar.
También he intentado:
schtasks /query /FO LIST
schtasks /query | format-list | where ....
esos tampoco funcionan.
¿Cuál sería la mejor manera de consultar las tareas en una computadora local usando Win7 y poder filtrarlas?
schtasks
espera allí, sino más bien una barra diagonal.Respuestas:
Podría intentar utilizar schtasks, lo que le dejará analizar el texto. Esto es casi siempre propenso a errores, y definitivamente más difícil de lo que es tomar la salida de un comando.
Resulta que hay un módulo TaskScheduler en PowerShellPack . Una vez que instale el paquete de PowerShell, para obtener todas las tareas programadas, use:
Como se trata de objetos reales, para encontrar una tarea de un nombre en particular, puede usar:
En general, encontrará que la comunidad de PowerShell ha tomado mucho más difícil usar líneas de comando, como schtasks, y las ha convertido en cmdlets fáciles de usar, como Get-ScheduledTask.
Ver también:
Envío de correos electrónicos automatizados utilizando el módulo TaskScheduler
Espero que esto ayude
fuente
si no necesita hacerlo en powershell, lo siguiente funcionará
schtasks / query | findtr / i "mytask"
ps versión
schtasks / query | ? {$ _ -como 'mytask'}
fuente
Aquí hay una publicación de blog que escribí sobre hacer esto. Esencialmente, tomé el resultado de / FO LIST / V, lo escribí en un archivo y lo importé nuevamente como objetos usando import-csv
fuente
schtasks /query /fo csv /v|convertfrom-csv
funciona bienschtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}
le proporcionarán todas las tareas programadas personalizadas que tenga.Puedes probar:
El truco está en convertir la salida a CSV primero, y luego de vuelta a un objeto de PowerShell.
fuente
Lo estás pensando demasiado.
Línea de comandos para lo que desea schtasks / query / s% computername% | FIND / I "% name_of_task%"
ejemplo schtasks / query / s server01 | FIND / I "horario"
fuente
Las mejores opciones son de Alex porque no necesita biblioteca y convertirá las respuestas de la cadena de schtasks en el objeto Powershell.
fuente