Fråga : Söka efter bearbeta som frambringar automatiskt SharePoint stsadm - migrate användaren skrivar, när du byter namn på en användare i aktivarkiv

Vårt företag byter namn på vanligt användarekonton i aktivarkiv. Detta är ett verkligt smärtar, därför att SharePoint kräver stadmen befaller efter är utförd varje gång gjort detta:

" stsadm - nolla-migrateuser - ignoresidhistory name> för oldlogin för newlogin
Currently byter namn på dem i aktivarkiv och e-post mig ett räkneark med de kända ändringarna. I än skapar en gruppera sparar att innehålla den nödvändiga stsadmen befaller. problemet för

The är att detta processaa är det benägna felet -. Förmiddag som I betraktar byggande ett nytto- för att göra en av following.
1. Skapa en befalla fodrar nytto-, att läser usernamesna från ett räkneark, uppdateringaktivarkiv och frambringar en spara med stsadmen befaller nödvändigt vid SharePoint.

OR

2. Bygg en fönsterapplikation för att byta namn på användare i aktivarkiv. Samtidigt det skulle frambringar automatiskt en spara med stsadmen command.

Does som vem som helst vet, om sådan ett nytto-, finns, eller har några andra förslag?
" klar "

Svar : Söka efter bearbeta som frambringar automatiskt SharePoint stsadm - migrate användaren skrivar, när du byter namn på en användare i aktivarkiv

Grunda kodifiera. Är här något av det nyckel- lappar av kodifiera/logiken.

Igen för varje webapplication, jag får varje platssamling. Kodifierastarterna på en given platssamling.

Få platssamlingsanvändaren listar.
För varje användare kontroll, om användaren finns i ANNONS via LoginName (samAccountName). Om användaren finns överhoppet (inte-behövd migrateuser). Om användaren inte finns, få användarens SID och se upp ANNONSEN som baseras på SID.
Få den nya inloggningen känd och frambring migrate användaren befaller till gruppera sparar, om funnit.
Notera att gruppera sparar ska har att upprepa för multipel fodrar för den samma användaren över platssamlingarna. Jag använder en powershell sorterar befaller för att ta bort dubbletten slutligen (GC C:\migrateUsers.txt| Sortera | 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 = ny-anmärker Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser i $siteCollUsers)
{
	om (($MyUser.LoginName.ToLower () - ne ”sharepoint \ system”) - och ($MyUser.LoginName.ToLower () - ne ”nt-myndighet \ legitimerade användare”) - och, ne (för $MyUser.LoginName.ToLower () - ”den tjänste- nt-myndighet \ lokalen”))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split (”\”)
		#Write-Vara värd ”användareinloggningen: ” $MyUser.LoginName, ”SID: ” $MyUser.Sid

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

			$nameFromSID = ConvertTo-Namnger $MyUser.Sid
			om ($nameFromSID - ne ”inte-funnen användare”)
			{
				$command = ”stsadm.exe - nolla-migrateuser - oldlogin” + $MyUser.LoginNAme + ”- newlogin” + $nameFromSID + ”- ignoresidhistory”,
				Skriva-tillverkad $command | ut-spara C:\migrateUsers.txt - fästa
			}


		}
	}
}

$web. Kassera ()
$site. Kassera ()

fungera ConvertTo-Namnger ($SID) 
{
   fälla 
   {
      ”Inte-funnen användare”; fortsätta
   }
   (ny-anmärka security.principal.securityidentifier $SID) (.translate ([security.principal.ntaccount])). Värdera
}

fungera Check_User_In_ActiveDirectory ([stränga], $LoginName, [stränga], $domaincnx)
{
	$returnValue = $false
	#Filter på användaren som finns och aktiverade
	$strFilter = ”(& (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName))”,
	$objDomain = Ny-Anmärker System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = Ny-Anmärker System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = ”Subtree”,

	#$objSearcher.PropertiesToLoad.Add (”namnge”),

	$colResults = $objSearcher.FindAll ()

	om ($colResults.Count - gt 0)
	{
		#Write-Vara värd ”kontot finns och aktivet: ” $LoginName
		$returnValue = $true
	}
	återgång $returnValue
}
Andra lösningar  
 
programming4us programming4us