Question : En recherchant l'outil qui produit automatiquement du stsadm de SharePoint - émigrer les manuscrits d'utilisateur, en retitrant un utilisateur dans l'annuaire actif

Notre compagnie retitre fréquemment des comptes d'utilisateur dans l'annuaire actif. C'est une vraie douleur parce que SharePoint exige la commande suivante de stadm soit exécuté chaque fois ceci fait : le

" stsadm - migrateuser d'o - name> d'ouverture de d'ouverture de
Currently les retitre dans l'annuaire actif et m'envoie un bilan avec les changements de nom. I que créent un fichier séquentiel contenant les commandes nécessaires de stsadm. le problème du

The est que ce processus est sujet aux erreurs. J'envisage d'établir une utilité pour faire un du following.

1. crée une ligne de commande utilité qui lit les noms de l'utilisateur d'un bilan, annuaire actif de mises à jour et produit d'un dossier avec les commandes de stsadm requises par la construction de SharePoint.

OR

2. une demande de fenêtres de retitrer des utilisateurs dans l'annuaire actif. En même temps elle produirait automatiquement d'un dossier avec le stsadm command.

Does que quiconque savent si une telle utilité existe ou ont toutes les autres suggestions ?
class= de

Réponse : En recherchant l'outil qui produit automatiquement du stsadm de SharePoint - émigrer les manuscrits d'utilisateur, en retitrant un utilisateur dans l'annuaire actif

A trouvé le code. Voici certains des morceaux principaux du code/de logique.

Encore, pour chaque webapplication, j'obtiens chaque collection d'emplacement. Le code commence sur une collection donnée d'emplacement.

Obtenir la liste utilisateurs de collection d'emplacement.
Pour chaque utilisateur, contrôle si l'utilisateur existent dans l'ANNONCE par l'intermédiaire de LoginName (samAccountName). Si l'utilisateur existent saut (migrateuser non requis). Si l'utilisateur n'existe pas, n'obtient pas le Sid de l'utilisateur et ne recherche pas l'ANNONCE a basé sur le Sid.
Si trouvé, obtenir le nouveau nom d'ouverture et se produire émigrent l'ordre d'utilisateur au fichier séquentiel.
Noter que le fichier séquentiel aura le multiple répéter des lignes pour le même utilisateur à travers les collections d'emplacement. J'emploie une commande de sorte de powershell d'enlever les reproductions à la fin (CHROMATOGRAPHIE GAZEUSE 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 = nouveau-objet Microsoft.SharePoint.SPSite ($SiteCollectionURL)
$web = $site.openweb ()

$siteCollUsers = $web.SiteUsers

foreach ($MyUser dans $siteCollUsers)
{
	si (($MyUser.LoginName.ToLower () - Ne « sharepoint \ système ») - et ($MyUser.LoginName.ToLower () - Ne « autorité de NT \ utilisateurs authentifiés ») - et Ne (de $MyUser.LoginName.ToLower () - « autorité de NT \ service local »))
	{
		$UserName = $MyUser.LoginName.ToLower ()
		$UserNameSplit = $UserName.split (« \ ")
		Ouverture d'utilisateur de #Write-Centre serveur « :  », $MyUser.LoginName, « SID :  », $MyUser.Sid

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

			$nameFromSID = ConvertTo-Nom $MyUser.Sid
			si ($nameFromSID - Ne « utilisateur non trouvé »)
			{
				$command = « stsadm.exe - migrateuser d'o - oldlogin » + $MyUser.LoginNAme + « - newlogin » + $nameFromSID + « - ignoresidhistory »
				Écrire-rendement $command | dehors-dossier C:\migrateUsers.txt - apposer
			}


		}
	}
}

$web. Disposer ()
$site. Disposent ()

ConvertTo-Nom de fonction ($SID) 
{
   piège 
   {
      « Utilisateur non trouvé » ; continuer
   }
   ((nouveau-objet security.principal.securityidentifier $SID) .translate ([security.principal.ntaccount])). Valeur
}

fonction Check_User_In_ActiveDirectory ([corde] $LoginName, [corde] $domaincnx)
{
	$returnValue = $false
	#Filter sur l'utilisateur qui existe et a activé
	$strFilter = « (et (|(objectCategory=user) (objectCategory=group))(samAccountName=$LoginName)) »
	$objDomain = Nouveau-Objet System.DirectoryServices.DirectoryEntry ($domaincnx)

	$objSearcher = Nouveau-Objet System.DirectoryServices.DirectorySearcher
	$objSearcher.SearchRoot = $objDomain
	$objSearcher.PageSize = 1000
	$objSearcher.Filter = $strFilter
	$objSearcher.SearchScope = « sous-arbre »

	#$objSearcher.PropertiesToLoad.Add (« nom »)

	$colResults = $objSearcher.FindAll ()

	si ($colResults.Count - GT 0)
	{
		Compte de #Write-Centre serveur le « existe et Active :  », $LoginName
		$returnValue = $true
	}
	$returnValue de retour
}
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us