Question Probleme invoke-command

Plus d'informations
il y a 10 ans 4 mois #21293 par Dela
Probleme invoke-command a été créé par Dela
Bonjour à tous,

Je rencontre un probleme que je ne comprends pas !

J'ai réalisé un script qui permet de créer en remote un compte local sur un poste de mon domaine. Cela fonctionne.
Ce script ajoute le compte créé dans le groupe \"administrateurs\" local de l'ordinateur distant.

Info : je viens de réaliser une migration AD, je dois sur les pc migrés recréer un admin local correspondant à nos normes ...

tout se passe bien quand j'excute ce script une fois avec le nom de la machine cible en dur :

[code:1]Invoke-Command -ComputerName NOMDELORDIQUEJEVEUX -ScriptBlock {

$cn = [ADSI]\"WinNT://NOMDELORDIQUEJEVEUX\"
$user = $cn.Create(\"User\",\"coucou\"«»)
$user.SetPassword(\"ThePassWord!\"«»)
$user.setinfo()
#$user.description = \"Admin Local\"
#$user.SetInfo()
$DomainName = NOMDELORDIQUEJEVEUX
$ComputerName = NOMDELORDIQUEJEVEUX
$UserName = \"coucou\"
$AdminGroup = [ADSI]\"WinNT://NOMDELORDIQUEJEVEUX/Administrateurs,group\"
$Usere = [ADSI]\"WinNT://NOMDELORDIQUEJEVEUX/$UserName,user\"
$AdminGroup.Add($Usere.Path)

}[/code:1]




Cela fonctionne pour un ordinateur sans souci !!!

Le probleme que je rencontre est lorsque je m'attaque à une liste de pc , je rencontre des messages d'erreur ....

Voici ma boucle for each :
[code:1]
$computers = get-adcomputer -filter * -searchbase \"OU=KOMPUTER_GPO_TEST;OU=XXX;OU=XXX,dc=XXX,dc=com\"


Foreach ($computer in $computers){

$compname = $computer.Name
$compname = $compname -replace '\"',''
$compname1 = '\"' + $computer.name + '\"'

Invoke-Command -ComputerName $compname -ScriptBlock {

$cn = [ADSI]\"WinNT://$compname\"
$user = $cn.Create(\"User\",\"coucou\"«»)
$user.SetPassword(\"MdpXxXXx\"«»)
$user.setinfo()
#$user.description = \"Admin Local\"
#$user.SetInfo()
$DomainName = $compname1
$ComputerName = $compname1
$UserName = \"coucou\"
$AdminGroup = [ADSI]\"WinNT://$compname/Administrateurs,group\"
$Usere = [ADSI]\"WinNT://$compname/$UserName,user\"
$AdminGroup.Add($Usere.Path)

}


}[/code:1]


J'ai une erreur :

L'exception suivante s'est produite lors de la récupération du membre « Create » : « Erreur inconnue (0x80005000) »
+ CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember
+ PSComputerName : PCQUEJEVEUXCONF

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
+ CategoryInfo : InvalidOperation : (SetPassword:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
+ PSComputerName : PCQUEJEVEUXCONF

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
+ CategoryInfo : InvalidOperation : (setinfo:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
+ PSComputerName : PCQUEJEVEUXCONF

L'exception suivante s'est produite lors de la récupération du membre « Add » : « Erreur inconnue (0x80005000) »
+ CategoryInfo : NotSpecified: (:) [], ExtendedTypeSystemException
+ FullyQualifiedErrorId : CatchFromBaseGetMember
+ PSComputerName : PCQUEJEVEUXCONF




J'ai retourné le truc dans tous les sens, je test mes variables, le formatgae des lignes de commande est propre , je dois me perdre qqe part sur un truc bête, mais j'ai la tete dans le guidon !

Si qq'un a une piste à suivre je suis preneur !

Un grand merci à ceux qui pourront au moins m'aiguiller !<br><br>Message édité par: Alexis, à: 15/01/16 13:36

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

Plus d'informations
il y a 10 ans 4 mois #21294 par Dela
Réponse de Dela sur le sujet Re:Probleme invoke-command
Je crois que j'ai compris !

Est ce que les variables que j'utilise apres l'invoke commande sont interpretées par le PC sur lequel j'envoie le scriptblock, du coup c'est dans le scriptblock que je dois definir des variables propres à la session PS qui execute le Scriptblock sur le poste distant !???

Compliqué comme phrase mais je pense que j'ai trouvé !

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

Plus d'informations
il y a 10 ans 4 mois #21295 par Dela
Réponse de Dela sur le sujet Re:Probleme invoke-command
[code:1]$computers = get-adcomputer -filter * -searchbase \&quot;OU=XxxXx;OU=XxxX;OU=XxxXx,dc=XxXx,dc=com\&quot;


Foreach ($computer in $computers){

$compname = $computer.Name
$compname = $compname -replace '\&quot;',''
$compname1 = '\&quot;' + $computer.name + '\&quot;'

Invoke-Command -ComputerName $compname -ScriptBlock {

$cn = [ADSI]\&quot;WinNT://$env:computername\&quot;
$user = $cn.Create(\&quot;User\&quot;,\&quot;coucou\&quot;«»)
$user.SetPassword(\&quot;LThePasswordkjgkjsd\&quot;«»)
$user.setinfo()
#$user.description = \&quot;Admin Local\&quot;
#$user.SetInfo()
$DomainName = $env:computername
$ComputerName = $env:computername
$UserName = \&quot;coucou\&quot;
$AdminGroup = [ADSI]\&quot;WinNT://$env:computername/Administrateurs,group\&quot;
$Usere = [ADSI]\&quot;WinNT://$env:computername/$UserName,user\&quot;
$AdminGroup.Add($Usere.Path)

}


}[/code:1]





HOP et voilà ca fonctionne, simplement dans le script block mettre le $envcomputername à la place du $computer.name, qui sera interpreté en direct sur le poste local et ca fonctionne, la valeur de ma variable n'est plus $null !



Forcement .... logique ! meaCulpa ! Question Reponse !!!

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

Plus d'informations
il y a 10 ans 4 mois #21296 par Dela
Réponse de Dela sur le sujet Re:Probleme invoke-command
la meme avec Password No expire.

[code:1]
$computers = get-adcomputer -filter * -searchbase \&quot;OU=KOMPUTER_GPO_TEST;OU=xXx;OU=xXxxx,dc=XxXx,dc=com\&quot;


Foreach ($computer in $computers){

$compname = $computer.Name
$compname = $compname -replace '\&quot;',''
$compname1 = '\&quot;' + $computer.name + '\&quot;'

Invoke-Command -ComputerName $compname -ScriptBlock {

$cn = [ADSI]\&quot;WinNT://$env:computername\&quot;
$user = $cn.Create(\&quot;User\&quot;,\&quot;coucou\&quot;«»)
$user.SetPassword(\&quot;dxXxXx@\&quot;«»)
$user.setinfo()
$user.description = \&quot;Admin Local\&quot;
$user.SetInfo()
$user.UserFlags = 65536
$user.SetInfo()
$DomainName = $env:computername
$ComputerName = $env:computername
$UserName = \&quot;coucou\&quot;
$AdminGroup = [ADSI]\&quot;WinNT://$env:computername/Administrateurs,group\&quot;
$Usere = [ADSI]\&quot;WinNT://$env:computername/$UserName,user\&quot;
$AdminGroup.Add($Usere.Path)

}


}[/code:1]

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

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