Sobre o progresso da ação personalizada do Reporting Configuration Manager

Embora uma ação personalizada esteja em execução em um cliente Configuration Manager, ela pode relatar informações de progresso usadas para exibir um indicador de progresso.

Você usa a interface de automação COM, IProgressUI::ShowActionProgress, para relatar informações de progresso para o ambiente de sequência de tarefas e para mostrar um indicador de progresso.

IProgressUI::ShowActionProgress é implementado na classe COM, ProgressUI, que é um objeto COM fora de processo no TSProgressUI.exe.

ProgressUI no ambiente de sequência de tarefas

Antes que a sequência de tarefas seja executada, ProgressUI seja registrada e, quando a sequência de tarefas for concluída, ela não será registrada. No sistema operacional de origem, ProgressUI é executado sob as credenciais de usuário registradas. Se nenhum usuário estiver conectado quando a sequência de tarefas for executada, o registro do objeto COM falhará. No sistema operacional de destino e no Windows PE, ProgressUI é executado na conta do sistema.

Chamando IProgressUI::ShowActionProgress

Em sua ação personalizada, você deve fazer o seguinte para relatar o progresso de sua ação personalizada e exibir um indicador de progresso.

Observação

Normalmente, você deve relatar informações de progresso se a ação levar mais de um minuto para ser executada.

Determinando se o indicador de progresso deve ser exibido

Usando a lógica a seguir, você pode usar variáveis de ambiente para determinar se o indicador de progresso deve ser exibido.

Se você estiver executando no WindowsPE ( _SMSTSInWinPE == "true") ou

Se você estiver executando em plena instalação pós-instalação do sistema operacional (_SMSTSReturnToGINA=="true") ou

Se a sequência de tarefas for iniciada a partir da mídia (_SMSTSLaunchMode é "CD", "DVD" ou "USB") ou

Se a sequência de tarefas estiver sendo executada no modo autônomo (_SMSTSStandAloneMode=="true") ou

Se o sinalizador de interface do usuário mostrar progresso for definido (_SMSTSShowProgressUI == "true"), o indicador de progresso deverá ser exibido; caso contrário, ele não deve ser exibido.

Criando o objeto COM ProgressUI

Você cria um ProgressUI objeto usando a mesma técnica que usa com qualquer objeto COM. No C++ você usa CoCreateInstance. Em C#, você adiciona uma referência à interface do usuário de progresso do SMS TSE e, no código-fonte, você cria uma instância da ProgressUILib.ProgressUIClass classe.

No VBScript, chame CreateObject com Microsoft.SMS. TsProgressUI.

Para obter um exemplo de criação de um objeto COM em VBSript e C#, consulte Como usar variáveis de sequência de tarefas em uma sequência de tarefas em execução Configuration Manager.

Obtendo as variáveis de ambiente necessárias

Várias variáveis de ambiente contêm informações que você deve passar para o IProgressUI::ShowActionProgress método. Por exemplo, o nome da organização necessário para o pszOrgName parâmetro está disponível na variável de ambiente, _SMSTSOrgName. Para obter mais informações, consulte IProgressUI::ShowActionProgress. Para obter informações sobre como ler variáveis de ambiente de sequência de tarefas, consulte Como usar variáveis de sequência de tarefas em uma sequência de tarefas em execução Configuration Manager.

Chamando IProgressUI::ShowActionProgress

Chame IProgressUI::ShowActionProgress para mostrar o indicador de progresso usando as informações recuperadas das variáveis de ambiente. Para passar o progresso percentual atual, use os parâmetros uActionExecStep e uActionExecMaxStep. Por exemplo, se você passar o valor 2 e uActionExecStep passar o valor 10 em uActionExecMaxStep, o percentual de conclusão da ação será de 20%.

Confira também

IProgressUI::ShowActionProgressProgressUI