Vraag : Zoekend hulpmiddel dat automatisch SharePoint stsadm produceert - migreer gebruikersmanuscripten, wanneer het anders noemen van een gebruiker in Actieve Folder

Ons bedrijf noemt vaak gebruikersrekeningen in Actieve Folder anders. Dit is een echte pijn omdat SharePoint vereist het volgende stadmbevel telkens als gedaan dit wordt uitgevoerd:

" stsadm - o migrateuser - oldlogin - newlogin - ignoresidhistory "

Currently onze helpdesk noemt hen in actieve folder anders en verstuurt me met de elektronische post een spreadsheet met de naamveranderingen. I dan cre�ër een partijdossier die de noodzakelijke stsadmbevelen bevatten. het probleem

The is dat dit proces feilbaar is. Ik denk bouw een nut na om één van following.

1 te doen. Cre�ër een nut van de bevellijn dat de gebruikersbenamingen van een spreadsheet leest, actieve die folder bijwerkt en een dossier met de stsadmbevelen produceert door SharePoint.

OR

2 worden gewenst. Bouw een vensterstoepassing voor het anders noemen van gebruikers in actieve folder. Tezelfdertijd zou het automatisch een dossier met stsadm command.

Does produceren om het even wie of bestaat zulk een nut weet of een andere suggesties heeft?

Antwoord : Zoekend hulpmiddel dat automatisch SharePoint stsadm produceert - migreer gebruikersmanuscripten, wanneer het anders noemen van een gebruiker in Actieve Folder

Vond de code. Hier zijn enkele zeer belangrijke stukken van de code/de logica.

Opnieuw, voor elke webapplication, krijg ik elke plaatsinzameling. De code begint op een bepaalde plaatsinzameling.

Krijg de de gebruikerslijst van de plaatsinzameling.
Voor elke gebruiker, controle als er gebruiker in ADVERTENTIE via LoginName (samAccountName) bestaat. Als er gebruiker skip (migrateuser nodig niet) bestaat. Als de gebruiker niet bestaat, SID van de gebruiker krijgen en die op ADVERTENTIE te kijken op SID wordt gebaseerd.
Indien gevonden, krijg de nieuwe login naam en produceer migreren gebruikersbevel aan het partijdossier.
Merk op dat het partijdossier veelvoud herhalend lijnen voor de zelfde gebruiker over de plaatsinzamelingen zal hebben. Ik gebruik een bevel van de powershellsoort om de duplicaten uiteindelijk te verwijderen (GC C:\migrateUsers.txt| Soort | 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 = nieuw-voorwerp Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser in $siteCollUsers)
{
	als (($MyUser.LoginName.ToLower () - Ne „sharepoint systeem \“) - en ($MyUser.LoginName.ToLower () - de voor authentiek verklaarde gebruikers van het Ne „nt gezag \“) - en ($MyUser.LoginName.ToLower () - de lokale dienst van het Ne „nt gezag \“))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split („\“)
		Login van de Gebruiker van de #Write-gastheer „: “, $MyUser.LoginName, „SID: “, $MyUser.Sid

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

			$nameFromSID = convertTo-Naam $MyUser.Sid
			als ($nameFromSID - Ne „Gevonden niet Gebruiker“)
			{
				$command = „stsadm.exe - o migrateuser - oldlogin“ + $MyUser.LoginNAme + „- newlogin“ + $nameFromSID + „- ignoresidhistory“
				Schrijven-output $command | uit-dossier C:\migrateUsers.txt - voeg toe
			}


		}
	}
}

$web. Schik ()
$site. Schik ()

functie convertTo-Naam ($SID) 
{
   val 
   {
      „Gevonden niet gebruiker“; ga verder
   }
   ((nieuw-voorwerp security.principal.securityidentifier $SID) .translate ([security.principal.ntaccount])). Waarde
}

functie Check_User_In_ActiveDirectory ([koord] $LoginName, [koord] $domaincnx)
{
	$returnValue = $false
	#Filter op Gebruiker wat bestaat en activeerde
	$strFilter = „(& (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName))“
	$objDomain = nieuw-Voorwerp System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = nieuw-Voorwerp System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = „Onderverdeling“

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

	$colResults = $objSearcher.FindAll ()

	als ($colResults.Count - GT 0)
	{
		#Write-gastheer „Rekening er bestaat en Actief: “, $LoginName
		$returnValue = $true
	}
	terugkeer $returnValue
}
Andere oplossingen  
 
programming4us programming4us