Questione : Cercando l'attrezzo che genera automaticamente lo stsadm di SharePoint - migrare gli scritti dell'utente quando cambiano titolo un utente nell'indice attivo

La nostra azienda cambia titolo frequentemente i clienti di utente nell'indice attivo. Ciò è un dolore reale perché SharePoint richiede il seguente ordine dello stadm è eseguito ogni volta questo fatto: il

" stsadm - migrateuser della o - name> di inizio attività del di inizio attività del
Currently li cambia titolo nell'indice attivo e mi invia con la posta elettronica un foglio elettronico con i cambi di nome. I di uno schedario di lavoro che contiene gli ordini necessari dello stsadm. il problema del

The è che questo processo è soggetto a errori. Sto studiando la possibilità di sviluppare un programma di utilità per fare uno del following.

1. genero una linea di ordine programma di utilità che legge i nomi utente da un foglio elettronico, indice attivo degli aggiornamenti e genera una lima con gli ordini dello stsadm stati necessari da configurazione di SharePoint.

OR

2. una domanda delle finestre di cambiamento titolo degli utenti nell'indice attivo. Allo stesso tempo genererebbe automaticamente una lima con lo stsadm command.

Does che qualcuno sa se un tal programma di utilità esiste o che ha tutti i altri suggerimenti?
class= del

Risposta : Cercando l'attrezzo che genera automaticamente lo stsadm di SharePoint - migrare gli scritti dell'utente quando cambiano titolo un utente nell'indice attivo

Ha trovato il codice. Qui sono alcune delle parti chiave del codice/logica.

Di nuovo, per ogni webapplication, ottengo ogni accumulazione del luogo. Il codice comincia su una collezione data del luogo.

Ottenere la lista di utente dell'accumulazione del luogo.
Per ogni utente, controllo se l'utente esiste in ANNUNCIO via LoginName (samAccountName). Se l'utente esiste salto (migrateuser non stato necessario). Se l'utente non esiste, non ottiene il Sid dell'utente e non osserva in su l'ANNUNCIO ha basato sul Sid.
Se trovato, ottenere il nuovo nome di inizio attività e generare migrano l'ordine dell'utente allo schedario di lavoro.
Si noti che lo schedario di lavoro avrà multiplo ripetere le linee per lo stesso utente attraverso le collezioni del luogo. Uso un ordine di specie del powershell rimuovere i duplicati alla fine (GASCROMATOGRAFIA C:\migrateUsers.txt| Specie | 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 = nuovo-oggetto Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser in $siteCollUsers)
{
	se (($MyUser.LoginName.ToLower () - Ne “sharepoint \ sistema„) - e ($MyUser.LoginName.ToLower () - Ne “autorità del NT \ utenti autenticati„) - e (Ne “autorità del NT \ servizio locale„ di $MyUser.LoginName.ToLower () -))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split (“\ ")
		Inizio attività dell'utente dell'#Write-Ospite “: „, $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 “utente non trovato„)
			{
				$command = “stsadm.exe - migrateuser della o - oldlogin„ + $MyUser.LoginNAme + “- newlogin„ + $nameFromSID + “- ignoresidhistory„
				Scrivere-uscita $command | fuori-lima C:\migrateUsers.txt - aggiungere
			}


		}
	}
}

$web. Disporre ()
$site. Dispongono ()

ConvertTo-Nome di funzione ($SID) 
{
   presa 
   {
      “Utente non trovato„; continuare
   }
   ((nuovo-oggetto security.principal.securityidentifier $SID) .translate ([security.principal.ntaccount])). Valore
}

funzione Check_User_In_ActiveDirectory ([stringa] $LoginName, [stringa] $domaincnx)
{
	$returnValue = $false
	#Filter sull'utente che esiste ed attivato
	$strFilter = “(& (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName))„
	$objDomain = Nuovo-Oggetto System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = Nuovo-Oggetto System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = “sotto-albero„

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

	$colResults = $objSearcher.FindAll ()

	se ($colResults.Count - GT 0)
	{
		Il cliente dell'#Write-Ospite “esiste ed Active: „, $LoginName
		$returnValue = $true
	}
	$returnValue di ritorno
}
Altre soluzioni  
 
programming4us programming4us