Question Utiliser un deuxieme compte dans un script

Plus d'informations
il y a 5 ans 1 mois #29251 par Bertaut
Bonjour à tous ! En ce merveilleux mercredi matin, je me présente à vous avec un problème qui me prend la tête depuis vendredi.

Etant un \"débutant\" en PowerShell (je suis autodidacte) et étant employé comme admin AD / système, j'apprends à utiliser PS pour gagner du temps.

Bon, le vif du sujet, je vous expose mon problème :
J'ai un environnement de plusieurs domaine qui interagissent entre eux, et dans ce cadre, je suis amener à intégrer des groupes du domaine A dans un groupe du domaine B, jusque là, rien de fou.

Le truc, c'est qu'en général, selon les utilisateurs, c'est plus ou moins long comme demande.

Donc là, j'ai une demande d'une cinquantaine de groupe d'un domaine à intégrer dans un groupe d'un autre domaine ET supprimer des groupes du premier domaine dans les même groupe du deuxième domaine.

J'ai bien sur pu trouver un script intéressant que j'ai tenter d'utiliser avec un fichier CSV (ParentGroup,ChildGroup,Action)

Le script est placé sur le domaine B sur un serveur de gestion auquel je suis connecté avec un compte qui n'a pas de droit sur le domaineA (quand je fais ce genre d'action à la main mes logins du domaine A sont demandé à chaque fois)

EDIT : Evidemment je n'ai pas la possibilité de modifier les habilitations propre à chaque serveur, je peux me contenter d'utiliser mes comptes opérateurs de chaque domaine

Ma question est donc simple (peut être ...) :

Comment, dans ce script PS, indiquer que pour chaque action, il doit utilsier un compte spécifique et comment lui indiquer ce compte DOMAINE\Compte ?

[code:1]
#ERROR REPORTING ALL
Set-StrictMode -Version latest

#IMPORT du module ActiveDirectory
Import-Module ActiveDirectory

$path = Split-Path -parent $MyInvocation.MyCommand.Definition
$inputGroups = $path + \"\input.csv\"
$exist_parent = \"\"
$exist_child = \"\"

Function AddRemoveADGroups
{
Import-CSV $inputGroups | ForEach-Object {
#verifie si tout les Parent + Child groups existent
Try
{
$exist_parent = Get-ADGroup $_.ParentGroup -ErrorAction Stop
$exist_child = Get-ADGroup $_.ChildGroup -server DomaineA -ErrorAction Stop
}
Catch
{
Write-Host \"$($_.Exception.Message)\"
}
If ($exist_parent -ne \"\" -And $exist_parent -ne $Null -And $exist_child -ne \"\" -And $exist_child -ne $Null)
{
$pg = $_.ParentGroup
$cg = $_.ChildGroup
If ($_.Action -eq \"ADD\"«»)
{
Try
{
$member_add = Add-ADGroupMember $_.ParentGroup $_.ChildGroup
Write-Host \"Added ($cg) to ($pg)\"
}
Catch
{
Write-Host \"$($_.Exception.Message)\"
}
}

If ($_.Action -eq \"REMOVE\"«»)
{
Try
{
$member_remove = Remove-ADGroupMember $_.ParentGroup $_.ChildGroup -Confirm:$False
Write-Host \"Removed ($cg) from ($pg)\"
}
Catch
{
Write-Host \"$($_.Exception.Message)\"
}
}
}
}
}
AddRemoveADGroups[/code:1]

Ce code me renvoi actuellement le message suivant pour chaque ligne de mon CSV :
The Server has rejecter the client creditentials.<br><br>Message édité par: Church, à: 11/09/19 09:07

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

Plus d'informations
il y a 5 ans 1 mois #29253 par Laurent Dardenne
Salut,
un début de réponse :
[code:1]Get-Help Add-ADGroupMember[/code:1]
Oui c'est un peu sec :P

Consulte le paramètre -Credential.
Teste déjà dans une console et si cela répond au besoin, intègre le à ton script.
Et du coup, comme on ne code pas en dur les credentials, un autre pb ce posera, mais à chaque jour suffit ça peine.

Tutoriels PowerShell

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

Plus d'informations
il y a 5 ans 1 mois #29254 par Bertaut
Bonjour Laurent, merci pour cette réponse, j'avais déjà consulter le Help une première fois sans voir l'option Credentials.
Pour ce qui est de les inclures en dur, en soit ça ne pose pas de problème, je suis le seul à me servir de ce script et il sera à usage ponctuel (dans le cas des demandes massives comme à présent), mais effectivement, chaque chose en son temps :)
Je m'en vais consulter tout ça immédiatement !

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

Plus d'informations
il y a 5 ans 3 semaines #29277 par Bertaut
Bonjour ! Bon, déjà, merci pour le petit indice sur les Credential, ça m'a permis de trouver la solution, mais, j'ai une dernière question pour résoudre mon problème :
Où placer l'option ? Là, j'ai tester en la plaçant après les action :
[code:1]Try
{
$member_add = Add-ADGroupMember $_.ParentGroup $_.ChildGroup -credential CompteADM
Write-Host \&quot;Added ($cg) to ($pg)\&quot;
}[/code:1]

Pareil pour la suppression :
[code:1]Try
{
$member_remove = Remove-ADGroupMember $_.ParentGroup $_.ChildGroup -credential CompteADM -Confirm:$False
Write-Host \&quot;Removed ($cg) from ($pg)\&quot;
}[/code:1]
Et de cette façon j'ai un petit message pour chaque action qui dit :
The server has rejected the client credentials

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

Plus d'informations
il y a 5 ans 3 semaines #29278 par Bertaut
Bonjour ! Bon, déjà, merci pour le petit indice sur les Credential, ça m'a permis de trouver la solution, mais, j'ai une dernière question pour résoudre mon problème :
Où placer l'option ? Là, j'ai tester en la plaçant après les action :
[code:1]Try
{
$member_add = Add-ADGroupMember $_.ParentGroup $_.ChildGroup -credential CompteADM
Write-Host \&quot;Added ($cg) to ($pg)\&quot;
}[/code:1]

Pareil pour la suppression :
[code:1]Try
{
$member_remove = Remove-ADGroupMember $_.ParentGroup $_.ChildGroup -credential CompteADM -Confirm:$False
Write-Host \&quot;Removed ($cg) from ($pg)\&quot;
}[/code:1]
Et de cette façon j'ai un petit message pour chaque action qui dit :
The server has rejected the client credentials

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

Plus d'informations
il y a 5 ans 3 semaines #29281 par Laurent Dardenne
Salut,
utilises-tu le cmdlet Get-Credential ?

Tutoriels PowerShell

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

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