Pergunta : Procurando a ferramenta que gera automaticamente o stsadm de SharePoint - migrar certificados do usuário, ao rebatizar um usuário no diretório ativo

Nossa companhia rebatiza freqüentemente clientes de usuário no diretório ativo. Esta é uma dor real porque SharePoint exige o seguinte comando do stadm seja executado cada vez isto feito: o

" stsadm - migrateuser do - name> do início de uma sessão do do início de uma sessão do
Currently rebatiza-os no diretório ativo e envia-me por correio electrónico um spreadsheet com as mudanças de nome. I do que cria uma lima de grupo que contem os comandos necessários do stsadm. o problema do

The é que este processo é sujeito a erros. Eu estou considerando construir uma utilidade para fazer um do following.

1. crio uma linha de comando utilidade que leia os nomes do utilizador de um spreadsheet, diretório ativo das atualizações e gere uma lima com os comandos do stsadm necessários pela configuração de SharePoint.

OR

2. um pedido das janelas para rebatizar usuários no diretório ativo. Ao mesmo tempo geraria automaticamente uma lima com o stsadm command.

Does que qualquer um sabe se tal utilidade existe ou tem todas as outras sugestões?
class= do

Resposta : Procurando a ferramenta que gera automaticamente o stsadm de SharePoint - migrar certificados do usuário, ao rebatizar um usuário no diretório ativo

Encontrou o código. Estão aqui algumas das partes chaves do código/lógica.

Além disso, para cada webapplication, eu começ cada coleção do local. O código começa em uma coleção dada do local.

Começ a lista de usuário da coleção do local.
Para cada usuário, verificação se o usuário existe no ANÚNCIO através de LoginName (samAccountName). Se o usuário existe faixa clara (migrateuser nao necessário). Se o usuário não existe, não começ o SID do usuário e não olha acima o ANÚNCIO baseou no SID.
Se encontrado, começ o nome de início de uma sessão novo e gerá-lo migram o comando do usuário à lima de grupo.
Anotar que a lima de grupo terá o múltiplo repetir linhas para o mesmo usuário através das coleções do local. Eu uso um comando da sorte do powershell remover as duplicatas na extremidade (GC C:\migrateUsers.txt| Sorte | GU > C:\migrateUsers.bat)



1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
[System.Reflection.Assembly]:: LoadWithPartialName (“Microsoft.SharePoint”) > $null
$site = novo-objeto Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser em $siteCollUsers)
{
	se (($MyUser.LoginName.ToLower () - ne “sharepoint \ sistema”) - e ($MyUser.LoginName.ToLower () - ne do “autoridade NT \ usuários autenticados”) - e (ne do “autoridade NT \ serviço local” de $MyUser.LoginName.ToLower () -))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split (“\ ")
		Início de uma sessão usuário do #Write-Anfitrião do “: ”, $MyUser.LoginName, “SID: ”, $MyUser.Sid

		$returncheck = Check_User_In_ActiveDirectory $UserNameSplit [1] $mydomaincnx 
		se ($returncheck - eq $False)
		{

			$nameFromSID = ConvertTo-Nome $MyUser.Sid
			se ($nameFromSID - ne “usuário não encontrado”)
			{
				$command = “stsadm.exe - migrateuser do - oldlogin” + $MyUser.LoginNAme + “- newlogin” + $nameFromSID + “- ignoresidhistory”
				Escrever-saída $command | para fora-lima C:\migrateUsers.txt - adicionar
			}


		}
	}
}

$web. Dispr ()
$site. Dispor ()

ConvertTo-Nome da função ($SID) 
{
   armadilha 
   {
      “Usuário não encontrado”; continuar
   }
   ((novo-objeto security.principal.securityidentifier $SID) .translate ([security.principal.ntaccount])). Valor
}

função Check_User_In_ActiveDirectory ([corda] $LoginName, [corda] $domaincnx)
{
	$returnValue = $false
	#Filter no usuário que existe e ativou
	$strFilter = “(& (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName))”
	$objDomain = Novo-Objeto System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = Novo-Objeto System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = “Subtree”

	#$objSearcher.PropertiesToLoad.Add (“nome”)

	$colResults = $objSearcher.FindAll ()

	se ($colResults.Count - GT 0)
	{
		Cliente do #Write-Anfitrião o “existe e Ative: ”, $LoginName
		$returnValue = $true
	}
	$returnValue do retorno
}
Outras soluções  
 
programming4us programming4us