Partilhar via


Tarefas do WMI: tarefas agendadas

As tarefas agendadas do WMI criam e obtêm informações sobre tarefas agendadas. Para obter outros exemplos, confira o TechNet ScriptCenter em https://www.microsoft.com/technet.

Os exemplos de script mostrados neste tópico obtêm dados somente do computador local. Para obter mais informações sobre como usar o script para obter dados de computadores remotos, confira Como conectar-se ao WMI em um computador remoto.

O procedimento a seguir descreve como executar um script.

Para executar um script

  1. Copie o código e salve-o em um arquivo com a extensão .vbs, por exemplo, nomedoarquivo.vbs. Verifique se o editor de texto não adicionou a extensão .txt ao arquivo.
  2. Abra uma janela do prompt de comando e navegue até o diretório no qual deseja salvar o arquivo.
  3. Digite cscript nomedoarquivo.vbs no prompt de comando.
  4. Se você não conseguir acessar um log de eventos, verifique se está executando a partir de um prompt de comandos com privilégios elevados. Alguns logs de eventos, como o Log de Eventos de Segurança, podem ser protegidos por UAC (Controles de Conta de Usuário).

Observação

Por padrão, o cscript exibe a saída de um script na janela do prompt de comando. Como os scripts do WMI podem gerar uma grande quantidade de saída, pode ser interessante redirecionar essa saída para um arquivo. Digite cscript nomedoarquivo.vbs > arquivodesaida.txt no prompt de comando para redirecionar a saída do script nomedoarquivo.vbs para arquivodesaida.txt.

A tabela a seguir lista exemplos de script que podem ser usados para obter diversos tipos de dados do computador local.

Como fazer... Classes ou métodos WMI
... criar tarefas agendadas usando scripts? Use a classe Win32_ScheduledJob e o método Create. Se você estiver tendo dificuldades para fazer essa tarefa funcionar no Windows 7 ou posterior, confira a seção Comentários do Win32_ScheduledJob; provavelmente suas configurações estão impedindo você de usar a classe.
VB
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
JobID = "Test"
Set objNewJob = objWMIService.Get("Win32_ScheduledJob")
errJobCreate = objNewJob.Create _
    ("Notepad.exe", "********143000.000000-420", True , 1 OR 4 OR 16, ,True, JobId) 
If errJobCreate = 0 Then
    WScript.Echo "Job created successfully: " & VBNewLine _
        & "Notepad.exe scheduled to run repeately at 14.30 (2:30 P.M.) PST" & VBNewLine _
        & "on Mon, Wed, and Fri."
Else
    WScript.Echo "Job not created. Error code = " & errJobCreate
End If

Na cadeia de caracteres "*******143000.000000-420" (usada no valor do parâmetro StartTime do método Create), "*******143000.000000" especifica que a tarefa começa às 14h30 e "-420" especifica o fuso horário. O número de fuso horário é o desvio atual da tradução de horário local. O desvio é a diferença entre a hora UTC e a hora local. Para calcular o desvio para seu fuso horário, multiplique o número de horas que seu fuso horário está à frente ou atrás do GMT (Horário de Greenwich) por 60 (use um número positivo para o número de horas, se o fuso horário estiver à frente do GMT, e um número negativo, se o fuso horário estiver atrás do GMT). Adicione mais 60 ao cálculo, se o fuso horário estiver usando o horário de verão. Por exemplo, o fuso horário padrão do Pacífico está oito horas atrás do GMT. Portanto, o desvio é igual a -420 (-8 * 60 + 60), quando o horário de verão está em uso, e -480 (-8 * 60), quando o horário de verão não está em uso. Você também pode determinar o valor do desvio consultando a propriedade de desvio da classe Win32_TimeZone.

... retornar uma lista de todas as tarefas agendadas em um computador?

Use a classe Win32_ScheduledJob. Observe que essa classe só pode retornar os trabalhos criados usando um script ou AT.exe. Ela não pode retornar informações sobre os trabalhos criados ou modificados pelo assistente de Tarefa Agendada.

VB
strComputer = "."
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colScheduledJobs = objWMIService.ExecQuery ("Select * from Win32_ScheduledJob")
For Each objJob in colScheduledJobs
    Wscript.Echo "Command: " & objJob.Command & VBNewLine _
    & "Days Of Month: " & objJob.DaysOfMonth & VBNewLine _
    & "Days Of Week: " & objJob.DaysOfWeek & VBNewLine _
    & "Description: " & objJob.Description & VBNewLine _
    & "Elapsed Time: " & objJob.ElapsedTime & VBNewLine _
    & "Install Date: " & objJob.InstallDate & VBNewLine _
    & "Interact with Desktop: " & objJob.InteractWithDesktop & VBNewLine _
    & "Job ID: " & objJob.JobId & VBNewLine _
    & "Job Status: " & objJob.JobStatus & VBNewLine _
    & "Name: " & objJob.Name & VBNewLine _
    & "Notify: " & objJob.Notify & VBNewLine _
    & "Owner: " & objJob.Owner & VBNewLine _
    & "Priority: " & objJob.Priority & VBNewLine _
    & "Run Repeatedly: " & objJob.RunRepeatedly & VBNewLine _
    & "Start Time: " & objJob.StartTime & VBNewLine _
    & "Status: " & objJob.Status & VBNewLine _
    & "Time Submitted: " & objJob.TimeSubmitted & VBNewLine _
    & "Until Time: " & objJob.UntilTime
Next

Tarefas do WMI para scripts e aplicativos

Exemplos de aplicativo C++ do WMI

TechNet ScriptCenter