Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[Powershell] UserWorkstations

2 réponses
Avatar
Eric
Bonjour,

Pour histoire, j'ai besoin d'automatiser des opérations dans l'AD pour un
passage de Citrix à Systancia.
J'ai bien réussi à me faire un script pour basculer des personnes d'un
groupe vers un autre mais j'ai besoin d'effectuer une opération
supplémentaire.
Chaque membre d'un grp citrix doit pouvoir se log sur 3 nouveau serveurs (et
plus dans le temps).
Sachant que sur mes comptes, certains ont le droit de se loguer n'importe où
et d'autre que sur certaines machines.

J'ai donc besoin de tester le userworkstations:
- s'il est en "not set" (full accès sur toutes les machines donc je ne
modifie rien)
- si des machines ou serveurs sont déjà spécifiés (dans ce cas là j'ajoute
mes 3 serveurs)

J'ai commencé mon script mais ça vide le champ userworkstations pour y
laisser que ma nouvelle machine, et mon test ne fonctionne pas.

=========Couic ===============
$root=([ADSI]"").distinguishedName

$compte = [ADSI]("LDAP://CN=Moi, OU=TEST INFORMATIQUE,"+ $root)

if ($compte.userWorkstations -eq 0)

{Write-Host "full access"} #blabla pour info seulement

else

{$compte.userWorkstations = $comte.userWorkstations + ",titi,toto,tata"

$compte.SetInfo()}

===========Couic==================

Ps: j'aurais du faire mon IF à l'envers pour ne traiter que les comptes
accès restrints..

Un petit coup de main serait le bien venu.



Merci d'avance.



Eric

2 réponses

Avatar
Eric
J'ai trouvé pour mon test, je vais utiliser:
if ([string]::isNullOrEmpty($compte.userworkstations)) { write-host "full,
pas toucher" }else {Write-Host "ajouter les nouvelles machines" }

Par contre je sèche pour l'ajout des machines sans écraser l'existant.





Avatar
Eric
bon, j'ai un script qui fonctionne:

====================== # ======= List Members =========
$root=([ADSI]"").distinguishedName

$appsrv = ",applidisadm,applidisapp01,applidisapp02"

$GroupCIT1 = [ADSI]("LDAP://CN=Citrix - Tests, OU=Pilote Citrix, OU=TEST
INFORMATIQUE,"+ $root)

# ======== Add in groups ===========
Foreach ($NomDN in $GroupCIT1.member)

{

$UserApplidis = $NomDN

$groupAP1 = [ADSI]("LDAP://CN=Applidis - Tests,OU=Pilote applidis,OU=TEST
INFORMATIQUE,"+ $root)

$groupAP1.Member.Add($UserApplidis)

$groupAP1.SetInfo()

# ======== Add Servers ===========
$compte = [ADSI]("LDAP://" + $UserApplidis)

if ([string]::isNullOrEmpty($Compte.userworkstations))

{}

else

{$wks = $($Compte.userWorkstations) + $appsrv

$Compte.userWorkstations =$wks

$Compte.SetInfo()

}

}

=================================================
Mais mon problème est que je dois gérer:

-si la personne est déjà dans ce ou ces groupes($groupAP1 et les futurs
$groupAP2...) pour éviter l'erreur renvoyée (existe déjà blablabla).

-les comptes qui ont déjà la possibilité de se connecter à ces serveurs pour
éviter les doublons.



Des suggestions sur la démarche à suivre svp?