Question ADMT

Plus d'informations
il y a 14 ans 2 mois #5903 par Besançon Ludovic
ADMT a été créé par Besançon Ludovic
Bonjour

ADMT est l'outil de migration Active Directory.

J'ai trouvé sur le site de Microsoft un script vbs qui fonctionne bien.
Je voulais le transcrire en powershell et j'ai des difficultés ...

Le script vbs :
[code:1]Dim objMigration
Dim objGroupMigration

Const admtData = 1

' Create instance of ADMT migration objects.
Set objMigration = CreateObject(\"ADMT.Migration\" )
Set objGroupMigration = objMigration.CreateGroupMigration

' Specify general migration options.
objMigration.IntraForest = False
objMigration.SourceDomain = \"myDomainSource\"
objMigration.SourceOu = \"myOUSource\"
objMigration.TargetDomain = \"myDomainCible\"
objMigration.TargetOu = \"myOUCible\"

' Migrate specified user objects.
objGroupMigration.Migrate admtData, Array(\"ZZ_mytestgroup\" ,\"ZZ_mytestgroup\"«»)

Set objGroupMigration = Nothing
Set objMigration = Nothing[/code:1]

Le début de la transcription PowerShell :
[code:1]$admtData = 1
$myADMT = New-Object -comobject ADMT.Migration
$myADMTGroup = $myADMT.CreateGroupMigration[/code:1]

Et là soi je fais $myADMTGroup | Get-member je ne vois pas la méthode Migrate !

$myADMTGroup | get-member


TypeName: System.Management.Automation.PSMethod

[code:1]Name MemberType Definition
----

Copy Method System.Management.Automation.PSMemberInfo Copy()
Equals Method System.Boolean Equals(Object obj)
GetHashCode Method System.Int32 GetHashCode()
GetType Method System.Type GetType()
get_IsInstance Method System.Boolean get_IsInstance()
get_MemberType Method System.Management.Automation.PSMemberTypes get_MemberType()
get_Name Method System.String get_Name()
get_OverloadDefinitions Method System.Collections.ObjectModel.Collection`1[[System.String, mscorlib, Version=2.0...
get_TypeNameOfValue Method System.String get_TypeNameOfValue()
get_Value Method System.Object get_Value()
Invoke Method System.Object Invoke(Params Object[] arguments)
set_Value Method System.Void set_Value(Object value)
ToString Method System.String ToString()
IsInstance Property System.Boolean IsInstance {get;}
MemberType Property System.Management.Automation.PSMemberTypes MemberType {get;}
Name Property System.String Name {get;}
OverloadDefinitions Property System.Collections.ObjectModel.Collection`1[[System.String, mscorlib, Version=2.0...
TypeNameOfValue Property System.String TypeNameOfValue {get;}
Value Property System.Object Value {get;set;}[/code:1]
Comment faire ?

Merci de votre aide.

Ludovic.<br><br>Message édité par: Ludovic, à: 12/01/10 16:18

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #5912 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:ADMT
Salut,
peux-tu reformater ton message en utilisant les balises code ?
Là, ce n'est pas aisée de distinguer ton code de tes explications/demandes.<br><br>Message édité par: Laurent Dardenne, à: 14/01/10 17:18

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #5919 par Arnaud Petitjean
Réponse de Arnaud Petitjean sur le sujet Re:ADMT
Bonjour Ludovic,

Et là soi je fais $myADMTGroup | Get-member je ne vois pas la méthode Migrate !


Malheureusement tout n'est pas toujours aussi simple ! Les objets COM sont un peu particuliers car tous n'exposent pas leurs propriétés et méthodes. En fait ça dépend de la manière dont ils ont été codés. J'ai déjà à plusieurs reprises rencontré les mêmes déboires que toi, notamment avec ADSI.

Ceci dit, ce n'est pas parce qu'on ne les voit pas qu'on ne peut pas les utiliser.

Si tu possèdes notre livre de référence ;-) tu peux essayer de t'inspirer des nombreux exemples de scripts du chapitre consacré à ADSI.

Sinon tu peux essayer des choses du genre :
[code:1]
$admtData = 1

$myADMT = New-Object -comobject ADMT.Migration
$myADMT.CreateGroupMigration.Migrate($admtData, @(\&quot;ZZ_mytestgroup\&quot; ,\&quot;ZZ_mytestgroup\&quot;«»))

ou

$myADMT.PSBase.CreateGroupMigration.InvokeSet('Migrate',$admtData, @(\&quot;ZZ_mytestgroup\&quot; ,\&quot;ZZ_mytestgroup\&quot;«»))
$myADMT.PSBase.CommitChanges()

[/code:1]

C'est sans garantie de fonctionnement, désolé ;-)

Bon courage,

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 2 mois #5947 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:ADMT
Ludovic écrit:

Et là soi je fais $myADMTGroup | Get-member je ne vois pas la méthode Migrate !
# TypeName: System.Management.Automation.PSMethod

Tu récupères un objet PSmethod, appele la méthode et pas l'objet méthode de l'objet PS :
[code:1]$myADMTGroup = $myADMT.CreateGroupMigration()[/code:1]
Et comme l'a dit Arnaud, vérifie les membres sur $myADMT.PSobject ou $myADMT.PSbase.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.074 secondes
Propulsé par Kunena