Get-CimInstance não funciona quando executado a partir da Tarefa Agendada

1

Eu tenho um script Powershell que exporta uma lista de todos os serviços no meu computador local usando o seguinte comando:

Get-CimInstance win32_service | Export-Csv $PSScriptRoot\Local\services.csv

Funciona bem quando eu o executo sob uma conta de administrador local de um prompt do powershell. Eu tentei executá-lo como uma tarefa agendada, usando a mesma conta de administrador local para executar a tarefa agendada e nada é enviado para o arquivo .csv.

Eu sei que a tarefa agendada em si está funcionando OK, porque há outros arquivos de saída que estão sendo atualizados como seria de esperar. O que é diferente sobre a execução deste script como uma tarefa agendada que está quebrando-o?

UPDATE : Eu corri o script nos dois sentidos com o ProcMon sendo executado em segundo plano. A única diferença que notei é que o processo da tarefa agendada tinha um ID de Sessão de 0, onde, como em execução, o script tinha diretamente um ID de Sessão de 4.

    
por mwolfe02 17.08.2015 / 21:00

1 resposta

1

Acho que o problema é que eu marquei a tarefa para:

(o) Run whether user is logged on or not

De acordo com a Microsoft ,

You can specify that a task should run even if the account under which the task is scheduled to run is not logged on when the task is triggered. To do this, select the radio button labeled Run whether user is logged on or not . If this radio button is selected, tasks will not run interactively. To make a task run interactively, select the Run only when user is logged on radio button.

A parte principal disso é essa frase:

To make a task run interactively, select the Run only when user is logged on radio button.

Acredito que o PowerShell precise ser executado interativamente para que o cmdlet Get-CimInstance seja executado corretamente. Eu mudei minha tarefa para Executar somente quando o usuário está logado e tudo parece estar funcionando agora.

    
por 19.08.2015 / 17:43