A Microsoft está fazendo todo o possível para tornar o PowerShell a escolha de usuários avançados e gravadores de automação em todos os lugares. Já se foram os dias de compilação de código no .NET para fazer a mesma coisa, agora você só precisa do notepad.exe e do google. Somos grandes fãs disso no escritório, principalmente porque o Console de Gerenciamento do Exchange 2007 NÃO inclui tudo o que você pode fazer no PowerShell. A Microsoft falhou deliberadamente na implementação de coisas que são feitas apenas de vez em quando, e são mais fáceis de desenvolver dessa maneira, o que obriga totalmente seu uso se você tiver algo parecido com um ambiente complexo.
O gerenciamento da nova geração de produtos da Microsoft (Win7, Windows Server 2008, Exchange 2007/2010, SQL Server 2008) possui ganchos do PowerShell muito ricos. Uma vez implantado o PowerShell Remoto (PowerShell 2.0 IIRC) com o Server 2008 R2, ele se tornará ainda MAIS útil para os gravadores de automação.
O que fizemos com isso:
- Crie uma página da web para delegar determinadas tarefas administrativas aos usuários do suporte técnico. A página da web dispara comandos que são executados no PowerShell. Coisas que faz:
- Criar e excluir contas de usuário, incluindo o provisionamento de caixas de correio e diretórios pessoais do Exchange 2007
- Desbloqueia contas bloqueadas
- Criar / excluir grupos
- Adicionar / remover usuários de grupos
- Mover usuários entre lojas de correio
- Definir senhas
- Faça extrações do sistema ERP e envie dados do catálogo de endereços global para o Active Directory todas as noites.
- Resolva o problema do LegacyExchangeDN que surgiu com a migração do Exchange 2003 para o Exchange 2007. Tinha que adicionar um endereço X500 a todos os que estavam no Exchange 2003. Um script do PowerShell bastante curto o corrigiu.
- Criação de scripts de "caixas de correio de grupo" (caixas de correio compartilhadas no Exchange, onde vários usuários têm acesso à caixa de correio), um processo manual, devido à natureza dos dados que precisamos antes de começar. Padronizou bastante a configuração dessas caixas de correio.
- Criou um script que percorreu todas as máquinas doma redefinindo uma chave de registro específica e reiniciando um serviço. Demorou 18 horas para ser concluído, mas o trabalho foi concluído.
Então, sim, o PowerShell estará conosco por algum tempo.
EDIT : Adicionando um exemplo de código, uma vez que foi solicitado
$ list = import-csv ("groupusers.csv")
$ lastseengroup = $ list [0] .group
$ ADGroupPrefix = "grp.netware."
$ ADGroupSuffix = "{redigido - no formato, ou = groups, dc = domínio, dc = domínio, dc = domínio}"
Lista de membros Clear-Variable
Utilizadores desconhecidos de variável clara
foreach ($ entrada na lista $) {
if ($ ($ entry.group) -ne $ lastseengroup) {
echo "tropeçou no novo grupo $ ($ entry.group), enviando alterações para $ lastseengroup"
$ newgroup = $ ADgroupPrefix + $ lastseengroup
$ newgroupdn = '"' +" cn = $ newgroup $ ADGroupSuffix "+ '"'
echo "obtendo DN para $ newgroup"
$ existinggroup = dsquery group domainroot -name $ newgroup
if (($ existinggroup -ne $ null)) {
dsmod group $ newgroupdn -chmbr $ memberlist
} outro {
dsadd group $ newgroupdn -scope u -secgrp yes -members $ memberlist -desc "Grupo importado do eDirectory"
}
Lista de membros Clear-Variable
}
$ User = get-user $ ($ entry.member) -ErrorAction SilentlyContinue
if ($ User.isvalid) {
$ UserDN = $ User.distinguishedname
$ memberlist = $ memberlist + '"' +" $ UserDN "+ '"'
} outro {
$ unknownusers = $ unknownusers + $ ($ entry.member)
}
$ lastseengroup = $ ($ entry.group)
}
dsadd group "cn = $ ADGroupPrefix $ lastseengroup $ ADGroupSuffix" -scope u -secgrp yes -members $ memberlist
Isso pega um arquivo CSV criado com um script perl e atualiza um conjunto de grupos. Se o grupo já existir, substitui a associação pela especificada no arquivo. Se o grupo não existir, ele será criado. Esta é uma sincronização unidirecional. Além disso, ainda não está em produção, mas está próximo.