Question
Erreur sur InvokeGet
- Franck B-A
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 10 ans 5 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.
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 5 mois #17917
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Erreur sur InvokeGet
bigkifran écrit:
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 .
Il faut peut être déterminer quelle est l'erreur.j'ai fouillé le net et aucune solution ne fonctionne oO.
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.
- Franck B-A
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 10 ans 5 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
<br><br>Message édité par: bigkifran, à: 8/08/14 15:15
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
<br><br>Message édité par: bigkifran, à: 8/08/14 15:15
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 5 mois #17922
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Erreur sur InvokeGet
bigkifran écrit:
Essaie en modifiant ton code comme ceci :
[code:1]
#debut ...
try {
$TestTS = $UserTS.psbase.invokeGet(\"terminalservicesprofilepath\"«»)
Write-Warning \"Suite...\"
catch {
Write-Warning \"Exception : $_\"
}
Write-Warning \"Contenu de TestTS :$TestTS\"
Write-Warning \"Type de TestTS :$($TestTS.GetType())\"
Write-Warning \"Convert TestTS to int: '$($TestTS -as [int])'\"
#Suite ...
[/code:1]
Que donne l'appel à Resolve-Error ?je vais vérifier tout ça .
Essaie en modifiant ton code comme ceci :
[code:1]
#debut ...
try {
$TestTS = $UserTS.psbase.invokeGet(\"terminalservicesprofilepath\"«»)
Write-Warning \"Suite...\"
catch {
Write-Warning \"Exception : $_\"
}
Write-Warning \"Contenu de TestTS :$TestTS\"
Write-Warning \"Type de TestTS :$($TestTS.GetType())\"
Write-Warning \"Convert TestTS to int: '$($TestTS -as [int])'\"
#Suite ...
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
Réduire
Plus d'informations
- Messages : 6302
- Remerciements reçus 68
il y a 10 ans 5 mois #17923
par Laurent Dardenne
Tutoriels PowerShell
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
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.
- Franck B-A
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 28
- Remerciements reçus 0
il y a 10 ans 5 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))
{ \"$i\" * 80
$Exception |Format-List * -Force
}
}
Set-Alias rver Resolve-Error
[/code:1]
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))
{ \"$i\" * 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.114 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Erreur sur InvokeGet