Bonjour à tous,

Je rencontre des difficultés lors de l'exécution de se script :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$account = "test34"
    $Searcher = New-Object DirectoryServices.DirectorySearcher
    $Searcher.Filter = '(&(objectCategory=person)(sAMAccountName='+$account+'))'
    $Searcher.SearchRoot = "LDAP://OU=_USERS,DC=DOMAINE,DC=dom"
    [string]$Info = $Searcher.FindOne() | select Path
	#On ne conserve que la partie LDAP...jusqu'à net
        $separator = "@{Path=","}" #termes à supprimer
        $option = [System.StringSplitOptions]::RemoveEmptyEntries #cette option supprime les espaces
        $User = $Info.Split($separator,$option) # $$User récupère le chemin souhaité
    #Fin de la récupération 
	$ModifHome= [adsi]($User)
	$ModifHome.homeDrive.Clear()
    $ModifHome.homedirectory.Clear()
	$ModifHome.CommitChanges()
Voici les erreurs remontées :
Impossible de convertir la valeur «*System.String[]*» en type «*System.DirectoryServices.DirectoryEntry*». Erreur*: «*La valeur fournie pour adsObject n'implémente pas les IAD.*»
Au niveau de C:\00_test.ps1*: 11 Caractère*: 26
+ $ModifHome= [adsi]($User <<<< )
+ CategoryInfo : NotSpecified: ( [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\00_test.ps1*: 12 Caractère*: 28
+ $ModifHome.homeDrive.Clear <<<< ()
+ CategoryInfo : InvalidOperation: (Clear:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\00_test.ps1*: 13 Caractère*: 35
+ $ModifHome.homedirectory.Clear <<<< ()
+ CategoryInfo : InvalidOperation: (Clear:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Au niveau de C:\00_test.ps1*: 14 Caractère*: 26
+ $ModifHome.CommitChanges <<<< ()
+ CategoryInfo : InvalidOperation: (CommitChanges:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Alors que, si je modifie mon script comme ceci, cela fonctionne

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$account = "test34"
    $Searcher = New-Object DirectoryServices.DirectorySearcher
    $Searcher.Filter = '(&(objectCategory=person)(sAMAccountName='+$account+'))'
    $Searcher.SearchRoot = "LDAP://OU=_USERS,DC=DOMAINE,DC=dom"
    [string]$Info = $Searcher.FindOne() | select Path
	#On ne conserve que la partie LDAP...jusqu'à net
        $separator = "@{Path=LDAP://","}","DC=dom" #termes à supprimer
        $option = [System.StringSplitOptions]::RemoveEmptyEntries #cette option supprime les espaces
        $User = $Info.Split($separator,$option) # $$User récupère le chemin souhaité
    #Fin de la récupération 
	$ModifHome= [adsi]('LDAP://'+$User+'DC=com')
	$ModifHome.homeDrive.Clear()
    $ModifHome.homedirectory.Clear()
	$ModifHome.CommitChanges()
Modification sur la ligne 7 et 11.

Merci de votre aide.