Frage : Nach Werkzeug suchend, das automatisch SharePoint stsadm erzeugt - Benutzerindexe abwandern, wenn Sie einen Benutzer im aktiven Verzeichnis umbenennen

Unsere Firma benennt häufig Benutzerkonten im aktiven Verzeichnis um. Dieses ist realen Schmerz, weil SharePoint den folgenden stadm Befehl ist jedes Mal durchgeführt getanes dieses erfordert:

" stsadm - O migrateuser - das oldlogin - newlogin - ignoresidhistory "

Currently unsere Beratungsstelle benennt sie im aktiven Verzeichnis um und mailt mir einen Verteilungsbogen mit den Namensänderungen. I als stellen eine Reihenakte her, welche die notwendigen stsadm Befehle enthält.

The Problem ist, dass dieser Prozess fehleranfällig ist. Ich erwäge, ein Dienstprogramm aufzubauen, um ein des following.

1. zu tun verursache eine Befehlszeile Dienstprogramm, die die Benutzernamen von einem Verteilungsbogen, aktives Verzeichnis der Updates liest und eine Akte mit den stsadm Befehlen erzeugt, die durch SharePoint.

OR

2. Bau eine Fensteranwendung für die Umbenennung der Benutzer im aktiven Verzeichnis benötigt werden. Gleichzeitig würde sie automatisch eine Akte mit dem stsadm command.

Does erzeugen, das jede wissen, wenn solch ein Dienstprogramm existiert oder alle mögliche anderen Vorschläge haben?

Antwort : Nach Werkzeug suchend, das automatisch SharePoint stsadm erzeugt - Benutzerindexe abwandern, wenn Sie einen Benutzer im aktiven Verzeichnis umbenennen

Fand den Code. Sind hier einige der Schlüsselstücke des Codes/der Logik.

Wieder für jedes webapplication, erhalte ich jede Aufstellungsortansammlung. Der Code beginnt auf einer gegebenen Aufstellungsortansammlung.

Die Aufstellungsortansammlungs-Benutzerliste erhalten.
Für jeden Benutzer Überprüfung, wenn Benutzer in der ANZEIGE über LoginName (samAccountName) existieren. Wenn Benutzer Zeilensprung (das migrateuser nicht benötigt) existieren. Wenn Benutzer oben existiert nicht, erhält SID des Benutzers und schaut, gründete ANZEIGE auf SID.
Wenn Sie gefunden werden, den neuen LOGON-Namen erhalten und erzeugen abwandern Benutzerbefehl zur Reihenakte.
Merken, dass die Reihenakte Mehrfachverbindungsstelle hat, Linien für den gleichen Benutzer über den Aufstellungsortansammlungen zu wiederholen. Ich verwende einen powershell Artbefehl, die Duplikate im Ende (GASCHROMATOGRAPHIE C:\migrateUsers.txt zu entfernen| Art | 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:
6:
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 = Neugegenstand Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser in $siteCollUsers)
{
	wenn (($MyUser.LoginName.ToLower () - Ne „sharepoint \ System“) - und ($MyUser.LoginName.ToLower () - Ne „NT-Berechtigung \ beglaubigte Benutzer“) - und ($MyUser.LoginName.ToLower () - Ne „NT-Berechtigung \ lokaler Service“))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split („\ ")
		#WriteWirt „Benutzer-LOGON: “, $MyUser.LoginName, „SID: “, $MyUser.Sid

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

			$nameFromSID = ConvertTo-Name $MyUser.Sid
			wenn ($nameFromSID - Ne „Benutzer nicht gefunden“)
			{
				$command = „stsadm.exe - O migrateuser - oldlogin“ + $MyUser.LoginNAme + „- newlogin“ + $nameFromSID + „- ignoresidhistory“
				Schreiben-Ausgang $command | Herausakte C:\migrateUsers.txt - hinzufügen
			}


		}
	}
}

$web. Abschaffen ()
$site. Schaffen ab ()

Funktion ConvertTo-Name ($SID) 
{
   Falle 
   {
      „Benutzer nicht gefunden“; fortfahren
   }
   ((Neugegenstand security.principal.securityidentifier $SID) .translate ([security.principal.ntaccount])). Wert
}

Funktion Check_User_In_ActiveDirectory ([Schnur] $LoginName, [Schnur] $domaincnx)
{
	$returnValue = $false
	#Filter auf Benutzer, der existiert und aktivierte
	$strFilter = „(u. (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName))“
	$objDomain = Neu-Gegenstand System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = Neu-Gegenstand System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = „Unterbaum“

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

	$colResults = $objSearcher.FindAll ()

	wenn ($colResults.Count - GT 0)
	{
		#WriteWirt „Konto existiert und Active: “, $LoginName
		$returnValue = $true
	}
	Rückhol$returnValue
}
Weitere Lösungen  
 
programming4us programming4us