Question Erreur sur InvokeGet

Plus d'informations
il y a 9 ans 7 mois #17916 par Franck B-A
Erreur sur InvokeGet a été créé par Franck B-A
Bonjour,

Jusque là je me débrouiller tranquillou avec Powershell.

Je dois tester une liste d' utilisateur et si leur chemin de profile itinérant est vide, les supprimer du groupe

le script est le suivant :
[code:1]
Import-Module ActiveDirectory
$csv = import-csv \"\\SERVER2\Script_Exploit\_Test-CTX\ListeUserTS.csv\"
foreach($csv in $csv){
$nom = $csv.nom
$root = [ADSI]\"\"
$DCName = \"MonDC\"
$BvTRS = \"GROUPE_BV\"

try { $UserDN = (([adsisearcher]\"(&(samaccountname=$nom)(objectcategory=user))\"«»).FindOne()).Properties[\"distinguishedname\"] }
catch { $UserDN -ne $null }

if ($UserDN -eq $null){ Write-Host -foregroundcolor RED \"Utilisateur $nom introuvable\" `n ;return }

Else {
Write-Host -foregroundcolor Green \" test de $nom \"
$UserDN = (([adsisearcher]\"(&(samaccountname=$nom)(objectcategory=user))\"«»).FindOne()).Properties[\"distinguishedname\"]
$UserTS = [ADSI](\"LDAP://$DCName/\" + $UserDN)
$TestTS = $UserTS.psbase.invokeGet(\"terminalservicesprofilepath\"«»)
if ($TestTS -ne \"\"«») { Write-Host -ForegroundColor RED \"TerminalServicesProfilePath de $nom NON VIDE !!\"}
#remplacement par $TestTS -ne $Null ne change rien


Else {Write-Host -ForegroundColor DarkGreen \"TerminalServicesProfilePath de $nom VIDE \"

$BvTRSDN = (([adsisearcher]\"(&(samaccountname=$BvTRS)(objectclass=group))\"«»).FindOne()).Properties[\"distinguishedname\"]
$User = [ADSI](\"LDAP://$DCName/\" + $UserDN)
$GroupBvTRS = [ADSI](\"LDAP://$DCName/\" + $BvTRSDN)
try { $RemUser =$groupBVTRS.member -contains $UserDN}
catch { $RemUser }
if (!$RemUser){ write-host \"L'utilisateur $nom n'appartient pas à $BvTRS \" }
Else {
$GroupBvTRS.remove(\"LDAP://$DCName/\" + $UserDN)
$GroupBvTRS.SetInfo()
write-host -foregroundcolor DarkGreen \"L'utilisateur $nom n' appartient plus au groupe $BvTRS \"
}
}
}
}

[/code:1]
Alors tant que le chemin du Profil TS est renseigné, tout va bien.
Mais dès que celui-ci est vide cela donne l'erreur suivante:
Mais là j'ai une erreur qui dit:
[code:1] test de User1
TerminalServicesProfilePath de 532327 NON VIDE !!
ça c'est bon^^
test de user2
Exception lors de l'appel de « InvokeGet » avec « 1 » argument(s) : « La propriété répertoire n’est pas présente dans le cache.
»
Au caractère \\Server2\Script_Exploit\_Test-CTX\test_Profil_BV2.ps1:18 : 9
+ $TestTS = $UserTS.psbase.invokeGet(\"terminalservicesprofilepath\"«»)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:«») [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodTargetInvocation[/code:1]

j'ai fouillé le net et aucune solution ne fonctionne oO.
Un pti coup de pouce ne me ferait pas de mal car j'ai pas trop envie de me coltiner les 1000 comptes à la mano :/
merci d'avance.

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

Plus d'informations
il y a 9 ans 7 mois #17917 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Erreur sur InvokeGet
bigkifran écrit:

j'ai fouillé le net et aucune solution ne fonctionne oO.

Il faut peut être déterminer quelle est l'erreur.
Télécharge Resolve-Error, il se peut que tu accèdes au détails de l'exception.

Une piste , à partir de la traduction du message d'erreur, et le code d'erreur E_ADS_PROPERTY_NOT_FOUND .

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 7 mois #17920 par Franck B-A
Réponse de Franck B-A sur le sujet Re:Erreur sur InvokeGet
Merci ^^

je vais vérifier tout ça .

Bon c'est pas une erreur de syntaxe...
même erreur avec [code:1]TerminalServicesProfilePath [/code:1]ou
[code:1]terminalservicesprofilepath [/code:1]

j'ai vérifié aussi pas d'espace ou de truc dan le genre.

J'ai testé depuis un autre PC: idem

:blink:<br><br>Message édité par: bigkifran, à: 8/08/14 15:15

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

Plus d'informations
il y a 9 ans 7 mois #17922 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Erreur sur InvokeGet
bigkifran écrit:

je vais vérifier tout ça .

Que donne l'appel à Resolve-Error ?

Essaie en modifiant ton code comme ceci :
[code:1]
#debut ...
try {
$TestTS = $UserTS.psbase.invokeGet(\&quot;terminalservicesprofilepath\&quot;«»)
Write-Warning \&quot;Suite...\&quot;
catch {
Write-Warning \&quot;Exception : $_\&quot;
}
Write-Warning \&quot;Contenu de TestTS :$TestTS\&quot;
Write-Warning \&quot;Type de TestTS :$($TestTS.GetType())\&quot;
Write-Warning \&quot;Convert TestTS to int: '$($TestTS -as [int])'\&quot;
#Suite ...
[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 7 mois #17923 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Erreur sur InvokeGet
Oups, double post.

Pour info l'édition d'un poste n'émet pas une nouvelle notification mail.<br><br>Message édité par: Laurent Dardenne, à: 8/08/14 15:45

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 7 mois #17926 par Franck B-A
Réponse de Franck B-A sur le sujet Re:Erreur sur InvokeGet
ok, pour le double post ;-)

pour le resolve-error

Tu parles bien de la fonction resolve-error :

[code:1]

function Resolve-Error ($ErrorRecord=$Error[0])
{
$ErrorRecord | Format-List * -Force
$ErrorRecord.InvocationInfo |Format-List *
$Exception = $ErrorRecord.Exception
for ($i = 0; $Exception; $i++, ($Exception = $Exception.InnerException))
{ \&quot;$i\&quot; * 80
$Exception |Format-List * -Force
}
}
Set-Alias rver Resolve-Error

[/code:1]

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

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