AutoClose de Incidente e Alteração.

Olá,

Após muito tempo estou de volta (De novo), Rs.

Um dos meus clientes avisou que os usuários não estão fechando os
chamados, tanto incidente, como alteração. Com isso, existem vários chamados
com o status de Completo ou concluído.

Ele solicitou se eu não tinha alguma solução para fechar os incidentes
e as alterações automaticamente.

Eu encontrei 2 posts sobre esse assunto no blog do Anders Bengtsson
(http://contoso.se/blog/?p=1629) e Marcel Zehner
(http://blog.scsmfaq.ch/2011/01/12/auto-close-resolved-incidents/). Eu
aproveitei esses dois posts e criei uma maneira de fechar o Incidente e a
alteração como o cliente havia solicitado.

Neste post o auto close vai executar a cada 12 horas e todos os incidentes
que estão com o status de Completo ou Concluído e que não foram atualizados a
mais de 2 dias vão mudar o status para Fechado.

Para criar o “fechamento” automático de incidente e alteração vou
utilizar a ferramenta SM Authoring Tool.

Abra a ferramenta SCSM Authoring tools. Clique em file, New. Escolha um
nome para o XML e clique em Save.

Clique com o botão direito em Workflow e selecione Create.

Digite um nome para o Wokflow. Clique em Next.

Como vamos programar para essa aplicação executar em um horário
determinado, deixe como padrão e clique em Next.

Z:\Pessoal\Documentos\Desktop\Post

Em Trigger Criteria, pode ser configurado o horário de inicio do
Workflows. Vou configurar para executar a cada 12 horas. Clique em Other
interval. Em Frequency digite 2 e mantenha a opção Hours.   em
Next.

Clique em Create

Clique em Close

Após a criação do Worflows, acesse a barra Activities Toolbox.

Clique em Windows PowerShell Script e arraste para o Drop Activities to
create a sequential Workflows.

Clique no Windows PowerShellScript1 e clique na aba details. Se quiser
pode modificar o nome do script em (Name). Selecione a opção Script Body e
clique em

Em Configure a Script Activity clique em View or Edit Script.

Nesse momento cole o seguinte Script:

$LogFilename = “c:\Logs\SCSM-AutoClose.log”;

$SMDefaultComputer = “SRVSCSM01”;

$Date = (get-date);

$DateString = $Date.toString();

import-module smlets;

$2DaysOld = (get-date).addhours(-48);

$IncidentsToClose = Get-SCSMObject -ClassName System.WorkItem.Incident$
| where{$_.lastmodified -lt $2DaysOld -AND $_.Status -like
“*Resol*”};

$IncidentsToClose | Set-SCSMObject -property Status -Value Closed;

Add-Content -Path $LogFilename ($Datestring + ” – ” +
$IncidentsToClose.Count + ” Incidentes AutoClosed”);

$changeToClose = Get-SCSMObject -ClassName
System.WorkItem.ChangeRequest$ | where{$_.lastmodified -lt $2DaysOld -AND
$_.Status -like “*Comple*”};

$changeToClose | Set-SCSMObject -property Status -Value Closed;

Add-Content -Path $LogFilename ($Datestring + ” – ” +  $changeToClose.Count + ” Alteracoes
AutoClosed”);

Vou detalhar o script asseguir:

Local que o Log deve ser salvo e o servidor do SCSM

$LogFilename = “c:\Logs\SCSM-AutoClose.log”;

$SMDefaultComputer = “SRVSCSM01”;

Variável para armazenar a variável tempo.

$Date = (get-date);

$DateString = $Date.toString();

Comando para importar o Modulo do SMLETS

import-module smlets;

Variável para definir o tempo da alteração ou incidente. Modifique o
Addhours(-48) para modificar o tempo em que a alteração ou incidente seja
fechado. Esse controle é feito por hora, no nosso exemplo estamos utilizando 2
dias, ou 48 horas.

$2DaysOld = (get-date).addhours(-48);

Linha de comando para fechar o incidente.

$IncidentsToClose = Get-SCSMObject -ClassName System.WorkItem.Incident$
| where{$_.lastmodified -lt $2DaysOld -AND $_.Status -like
“*Resol*”};

$IncidentsToClose | Set-SCSMObject -property Status -Value Closed;

Linha de comando para adicionar o resultado do incidente no log.

Add-Content -Path $LogFilename ($Datestring + ” – ” +
$IncidentsToClose.Count + ” Incidentes AutoClosed”);

Linha de comando para fechar a alteração.

$changeToClose = Get-SCSMObject -ClassName
System.WorkItem.ChangeRequest$ | where{$_.lastmodified -lt $2DaysOld -AND
$_.Status -like “*Comple*”};

$changeToClose | Set-SCSMObject -property Status -Value Closed;

Linha de comando para adicionar o resultado da alteração no log.

Add-Content -Path $LogFilename ($Datestring + ” – ” +  $changeToClose.Count + ” Alteracoes
AutoClosed”);

Clique na aba Script Properties

Confirme a criação do Script Body.

Clique em salve para salvar o.xml. Na pasta que foi salva o xml deve
ter os seguintes arquivos.

Acesso o Management Server do Service Manager. Copie o arquivo autocloseincidentchange.dll
para C:\Program Files\Microsoft System Center\Service Manager 2010. Importe o
arquivo ManagementPack.Autoclose.Incident.Change.xml.

Para verificar o funcionamento verifique o Log ou então pode ser feito
pela console em Workflows > Status > Autocloseincidentchange.

Espero que seja util.

Até a próxima,
[]‘s
Aurélio Alves
https://aurelioalves.wordpress.com

Sobre Aurelio Alves

Certificado Microsoft em Windows Vista, Windows 7, BDD, MDOP, SCCM, SCVMM, Windows Server 2003, Windows Server 2008. MCP, MCSA,MCITP e MCTS. Com 6 anos de experiência na área de Tecnologia da Informação trabalho como consultor especialista em tecnologias Microsoft focado em gerenciamento e virtualização, atuando diretamente com a família System Center, MDOP e Hyper-V.
Esse post foi publicado em Service Manager e marcado . Guardar link permanente.

5 respostas para AutoClose de Incidente e Alteração.

  1. Gabriel disse:

    Aurélio,

    Coloquei exatamente o que você descreveu na linha do código do script, mas deu erro de compilação.

    Tem como você colocar os arquivos assim como o post do blog do contoso.se???

  2. Paulo Xaxá disse:

    Aurélio,
    Segui o passo-a-passo fielmente, só alterando o tempo para 72 horas (3 dias); porém, ao tentar salvar o arquivo .XML, é apresentada uma tela de erro:
    “Invalid character in the given encoding. Line 2, position 158”
    Já revisei o script várias vezes, mas não encontro erro algum. Alguma idéia?
    =================================================================
    “$LogFilename = “c:\Logs\SCSM-AutoClose.log”;

    $SMDefaultComputer = “SRVSCSM01″;

    $Date = (get-date);

    $DateString = $Date.toString();

    import-module smlets;

    $2DaysOld = (get-date).addhours(-72);

    $IncidentsToClose = Get-SCSMObject -ClassName System.WorkItem.Incident$
    | where{$_.lastmodified -lt $3DaysOld -AND $_.Status -like
    “*Resol*”};

    $IncidentsToClose | Set-SCSMObject -property Status -Value Closed;

    Add-Content -Path $LogFilename ($Datestring + ” – ” +
    $IncidentsToClose.Count + ” Incidentes AutoClosed”);

    $changeToClose = Get-SCSMObject -ClassName
    System.WorkItem.ChangeRequest$ | where{$_.lastmodified -lt $2DaysOld -AND
    $_.Status -like “*Comple*”};

    $changeToClose | Set-SCSMObject -property Status -Value Closed;

    Add-Content -Path $LogFilename ($Datestring + ” – ” + $changeToClose.Count + ” Alteracoes
    AutoClosed”);”
    ===========================================================================

    • Aurelio Alves disse:

      Paulo..

      Desculpe a demora no retorno..

      Acredito que o erro seja o sinal após o nome do servidor ($SMDefaultComputer = “SRVSCSM01″;) consegue ver a diferença (“) e (″)?

      No erro ele diz que é na linha 2, e não existe outro erro.

      Tenta ai..

      []’s

  3. pauloxaxa disse:

    Aurélio,

    Consegui encontrar as causas dos problema que eu estava tendo! Além do caractere especial após o nome do servidor (que você detectou), devido à mudança de versão dos SMLets a partir da Beta 3, era necessário fazer um pequeno ajuste no código, como explicado em um dos comentários do post original da solução (Marcel Zehner):

    De: Get-SCSMObject -ClassName System.WorkItem.Incident$
    Para: Get-SCSMObject -Class (Get-SCSMClass –Name System.WorkItem.Incident$)

    Tudo ok agora! Obrigado pela ajuda e pela iniciativa do post😀

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s