Question
Problème TSprofilePath AD
- Nicolas Guerin
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 10 ans 1 mois #16865
par Nicolas Guerin
Problème TSprofilePath AD a été créé par Nicolas Guerin
Bonjour voici un script qui marche
[code:1]
import-module activedirectory
#Si chemin = \"lala\" c un chemin local, sinon c'est l'autre (celui avec le lecteur réseaux)
#Chemin connexion lecteur réseau (par exemple I: \\blabla\monservice)
$TShdValue = \"\\lalaa\"
#Chemin d'accès au profil (blabla)
$TSppValue = \"\\test\lala\%username%\"
$ObjFilter = \"(&(objectCategory=person)(objectCategory=User))\"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = $ObjFilter
$objSearch.SearchRoot = \"LDAP://ou=Utilisateurs,dc=test,dc=fr\"
$AllObj = $objSearch.FindAll()
foreach ($Obj in $AllObj)
{
$objItemS = $Obj.Properties
$UserDN = $objItemS.distinguishedname
$user = [ADSI] \"LDAP://$userDN\"
$user.psbase.invokeSet(\"TerminalServicesProfilePath\",$TSppValue)
$user.psbase.invokeSet(\"TerminalServicesHomeDirectory\",$TShdValue)
$user.setinfo()
}
[/code:1]
Le problème est que le %username% reste en tant que tel. Hors je veux que ça soit une variable d'environnement et pas une simple chaîne de caractère.
Problème N°2
Je n'arrive pas aussi à récupérer la chaîne de caractère avec la lettre (exemple I: \\test1\service-a]<br><br>Message édité par: Nicolas.18, à: 31/01/14 15:53
[code:1]
import-module activedirectory
#Si chemin = \"lala\" c un chemin local, sinon c'est l'autre (celui avec le lecteur réseaux)
#Chemin connexion lecteur réseau (par exemple I: \\blabla\monservice)
$TShdValue = \"\\lalaa\"
#Chemin d'accès au profil (blabla)
$TSppValue = \"\\test\lala\%username%\"
$ObjFilter = \"(&(objectCategory=person)(objectCategory=User))\"
$objSearch = New-Object System.DirectoryServices.DirectorySearcher
$objSearch.PageSize = 15000
$objSearch.Filter = $ObjFilter
$objSearch.SearchRoot = \"LDAP://ou=Utilisateurs,dc=test,dc=fr\"
$AllObj = $objSearch.FindAll()
foreach ($Obj in $AllObj)
{
$objItemS = $Obj.Properties
$UserDN = $objItemS.distinguishedname
$user = [ADSI] \"LDAP://$userDN\"
$user.psbase.invokeSet(\"TerminalServicesProfilePath\",$TSppValue)
$user.psbase.invokeSet(\"TerminalServicesHomeDirectory\",$TShdValue)
$user.setinfo()
}
[/code:1]
Le problème est que le %username% reste en tant que tel. Hors je veux que ça soit une variable d'environnement et pas une simple chaîne de caractère.
Problème N°2
Je n'arrive pas aussi à récupérer la chaîne de caractère avec la lettre (exemple I: \\test1\service-a]<br><br>Message édité par: Nicolas.18, à: 31/01/14 15:53
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 10 ans 1 mois #16866
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème TSprofilePath AD
Salut,
Nicolas.18 écrit:
Nicolas.18 écrit:
Nicolas.18 écrit:
Sous PS utilise $env:usernameLe problème est que le %username% reste en tant que tel.
Nicolas.18 écrit:
Je n'ai pas compris.Problème N°2
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Nicolas Guerin
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 33
- Remerciements reçus 0
il y a 10 ans 1 mois #16867
par Nicolas Guerin
Réponse de Nicolas Guerin sur le sujet Re:Problème TSprofilePath AD
En gros je n'arrive pas à récupéré le champs de l'atribu TSprofilePath AD
pour ce qui est de $env:username, ça marche, mais ça récupere mon propre username, or je veux mettre celui de l'utilisateur.
J'ai pensé à utiliser
[code:1]$usersama = $objItemS.sAMAccountName[/code:1]
Mais pour le moment rien.
Je continu mes recherche et mes test
pour ce qui est de $env:username, ça marche, mais ça récupere mon propre username, or je veux mettre celui de l'utilisateur.
J'ai pensé à utiliser
[code:1]$usersama = $objItemS.sAMAccountName[/code:1]
Mais pour le moment rien.
Je continu mes recherche et mes test
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 10 ans 1 mois #16868
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème TSprofilePath AD
Nicolas.18 écrit:
Je n'ai pas d'AD sous la main pour vérifier mais essaie cette syntaxe :
[code:1]$objItemS[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 31/01/14 12:46
ça va mieux en le disantpour ce qui est de $env:username, ça marche, mais ça récupere mon propre username, or je veux mettre celui de l'utilisateur.
Je n'ai pas d'AD sous la main pour vérifier mais essaie cette syntaxe :
[code:1]$objItemS[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 31/01/14 12:46
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
il y a 10 ans 1 mois #16869
par Philippe
Réponse de Philippe sur le sujet Re:Problème TSprofilePath AD
salut nicolas
réessaie ca (sans lettre majuscule)
[code:1]$objItemS.samaccountname[/code:1]
tu pourra avoir orthographe exacte qui marche
avec $Obj.Properties dans ou après ta boucle
ou plus simplement $AllObj[0].Properties juste après ton findall
pour plus explication
$AllObj de type SearchResult contient le membre Properties qui est une collection
cette collection est sensible a la case, contrairement a une propriété.
Laurent pourra peut-être te donner plus d'info
[code:1]$AllObj|gm
TypeName: System.DirectoryServices.SearchResult
Name MemberType Definition
----
Equals Method bool Equals(System.Object obj)
GetDirectoryEntry Method adsi GetDirectoryEntry()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Path Property System.String Path {get;}
Properties Property System.DirectoryServices.ResultPropertyCollection Properties {get;}[/code:1]
[code:1]$AllObj[0].Properties|gm
TypeName: System.DirectoryServices.ResultPropertyCollection
Name MemberType Definition
----
Clear Method System.Void Clear()
Contains Method bool Contains(string propertyName)
CopyTo Method System.Void CopyTo(System.DirectoryServices.ResultPropertyValueCollection[] array, int index), System.Void CopyTo(arra...
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty System.DirectoryServices.ResultPropertyValueCollection Item(string name) {get;}
Count Property System.Int32 Count {get;}
PropertyNames Property System.Collections.ICollection PropertyNames {get;}
Values Property System.Collections.ICollection Values {get;} [/code:1]
réessaie ca (sans lettre majuscule)
[code:1]$objItemS.samaccountname[/code:1]
tu pourra avoir orthographe exacte qui marche
avec $Obj.Properties dans ou après ta boucle
ou plus simplement $AllObj[0].Properties juste après ton findall
pour plus explication
$AllObj de type SearchResult contient le membre Properties qui est une collection
cette collection est sensible a la case, contrairement a une propriété.
Laurent pourra peut-être te donner plus d'info
[code:1]$AllObj|gm
TypeName: System.DirectoryServices.SearchResult
Name MemberType Definition
----
Equals Method bool Equals(System.Object obj)
GetDirectoryEntry Method adsi GetDirectoryEntry()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Path Property System.String Path {get;}
Properties Property System.DirectoryServices.ResultPropertyCollection Properties {get;}[/code:1]
[code:1]$AllObj[0].Properties|gm
TypeName: System.DirectoryServices.ResultPropertyCollection
Name MemberType Definition
----
Clear Method System.Void Clear()
Contains Method bool Contains(string propertyName)
CopyTo Method System.Void CopyTo(System.DirectoryServices.ResultPropertyValueCollection[] array, int index), System.Void CopyTo(arra...
Equals Method bool Equals(System.Object obj)
GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
Item ParameterizedProperty System.DirectoryServices.ResultPropertyValueCollection Item(string name) {get;}
Count Property System.Int32 Count {get;}
PropertyNames Property System.Collections.ICollection PropertyNames {get;}
Values Property System.Collections.ICollection Values {get;} [/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6300
- Remerciements reçus 68
il y a 10 ans 1 mois #16872
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Problème TSprofilePath AD
6ratgus écrit:
Je ne vois pas ce que je peux ajouter de plus, si n'est que sur ce type de traitement j'utilise une fonction qui transforme les données et évite de devoir se souvenir des détails d'implémentation. Je sais qu'en entrée les noms de propriétés sont sensible à la casse, en revanche en sortie j'avais un doute, mais si tu le dis je te croisLaurent pourra peut-être te donner plus d'info
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.082 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Problème TSprofilePath AD