Fluxo de trabalho de novo usuário do Active Directory

5

Eu trabalho em uma pequena organização que usa um único arquivo & servidor de impressão com um domínio do Active Directory para gerenciamento de usuários.

O administrador do escritório que fornece novas pessoas não é técnico e geralmente cria a conta de usuário do AD porque não há suporte permanente de TI no local e os usuários precisam de suas contas imediatamente. No entanto, há um trabalho de acompanhamento que precisa ser feito depois disso (criando uma extensão no PBX, configurando o correio de voz, preenchimento de formulário, etc, etc.) que precisa ser distribuído para várias pessoas diferentes.

O processo manual em que trabalhamos na maior parte, mas tem lacunas e coisas às vezes são esquecidas. Eu não estou em posição de re-arquitetar esses processos de negócios, como eles são, então, para os propósitos desta questão, por favor, podemos levá-la como lida que o processo de negócio é imutável . Minha solução precisa interagir com o processo existente.

Essencialmente, o que eu preciso é uma forma de gerar notificações por e-mail com a criação manual de um novo usuário no Active Directory - uma espécie de mecanismo leve de fluxo de trabalho que apenas envia e-mails para as pessoas e / ou meu sistema de tíquetes precisa fazer. Sim, eu sei que não é a melhor prática, sim, eu sei que não é legal, mas dada a minha situação, eu acho que é a solução mais pragmática.

Existe uma maneira simples e leve de fazer isso? Estou pensando nas linhas de um script do PowerShell ou algo parecido (não há orçamento para um sistema de IDM adequado e, como mencionei, o processo de negócios é imutável).

    
por Tim Long 18.05.2011 / 18:54

4 respostas

3

Para ajudar um pouco com o email do Powershell. Eu usei System.Net.Mail.SmtpClient para enviar do powershell.

$Mail = New-Object System.Net.Mail.MailMessage($Sender,$Recipient)
$Mail.IsBodyHTML = $True

## Setup SMTP Mail Server info
$MailClient = New-Object System.Net.Mail.SmtpClient
$MailClient.Host = $Mailserver


$Mail.Subject = "Subject"
$Mail.Body = "blah blah blah"

# Send the message
$MailClient.Send($Mail)
}

Você precisaria especificar o $ Sender, $ recipient e $ mailserver.

    
por 18.05.2011 / 19:13
2

Portanto, isso é mais uma questão de processo do que uma questão tecnológica. Parece-me que você não tem algum tipo de sistema de bilhética. Eu sugiro colocar um no lugar, uma vez que irá ajudar outras áreas também. Os sistemas decentes permitirão que você configure um fluxo de trabalho que permita "empurrar" o ticket para a próxima pessoa na fila, assim que a peça for concluída.

Como um caso pior, você seria capaz de criar manualmente o fluxo, empurrando o ticket e ter um "dono" que é empurrado de volta para ser movido para a próxima pessoa.

Para responder a sua pergunta direta, você pode criar um script Powershell que criará um usuário AD, então você pode enviar e-mail - não tinha que fazer isso no Powershell v2 ainda, mas em V1 você tinha que mergulhar no .Net objetos para enviar o email, mas não é tão difícil (get-object é seu amigo)

    
por 18.05.2011 / 18:59
1

Com base na discussão que ocorreu até agora e nos seus comentários, sugiro que uma tarefa agendada seja executada uma vez por hora para detectar novos usuários, o que envia um email contendo novos usuários na última hora.

Se você formatar bem o e-mail, incluindo todas as etapas do seu fluxo de trabalho, a pessoa que o receber poderá comentar sua tarefa (ou rasurar o texto) e depois encaminhar o e-mail.

Embora não seja eficaz na comunicação imediata de novas contratações, é:

  1. Simples
  2. Efetivo na comunicação para o tamanho de sua pequena empresa
  3. Muito baixo em recursos

Aqui está o PowerShell que você pode usar para encontrar os nomes dos usuários criados na última hora:

$date = [datetime]::UtcNow.addhours(-1)
$lasthour = "{0:0000}{1:00}{2:00}{3:00}{4:00}{5:00}.0Z" -f $date.year,$date.month,$date.day,$date.hour,$date.minute,$date.second

$strFilter = "(&(objectCategory=User)(whenCreated>=$lasthour))"


$objDomain = New-Object System.DirectoryServices.DirectoryEntry

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter

$colProplist = "name"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
    {$objItem = $objResult.Properties; $objItem.name}

Como alternativa, você pode escrever algo no powershell para facilitar a criação de um usuário com base na entrada da equipe e depois continuar com um e-mail no final desse processo.

No geral, se você já tiver um sistema de tickets, sugiro que seja a melhor opção, porque é algo que pode ser usado para rastrear de maneira detalhada. O que eu digitei acima é realmente apenas um bilhete informal com muito espaço para erro.

    
por 18.05.2011 / 23:24
0

O que você realmente está pedindo é um novo administrador do AD. Embora seja tecnicamente possível criar um script para pesquisar alterações do AD, procurar novos objetos de usuário e enviar uma lista, o esforço envolvido na verificação do novo usuário ainda precisa da próxima etapa do fluxo de trabalho, no qual você tem um novo email sobre sobre contas que são recriadas devido a um erro?) seria mais do que simplesmente fazer com que o administrador siga o processo que você descreveu. É o administrador que deve estar solicitando uma maneira de automatizar o e-mail, em vez de procurar uma maneira de ver que ele fez isso. Você precisa resolver seus problemas de processo antes de poder pensar em automatizá-los

    
por 18.05.2011 / 20:46