Flash info

Maître Yoda utilise PowerShell. Cette source encore non confirmée par Obi-Wan Kenobi aurait pour origine une conférence sur la force obscure de CMD. Que le POWERshell soit avec vous...

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
africanism78
Utilisateur

PowerShelleur Débutant
Messages: 4
graphgraph
Karma: 0  
[Resolu] Erreur appel de methode - 12/06/19 11:30 Bonjour a tous,

voila je suis novice en powershell.
je me suis fait un petit script qui va lire et faire une boucle sur la lecture d'un fichier, jusque la pas de pb, le soucis c'est qu'il me sort une erreur sur un appel de methode qui n'existe pas alors que le methode existe.

Échec lors de l’appel de la méthode, car [System.String] ne contient pas de méthode nommée « GetInfosCompte » pour exemple car ca me fait la meme chose sur les 3 qui ce trouve dans le fichier.

ci-joint le code ps1
Code:

 #On récupère le fichier XML [xml]$xmlfile=Get-Content c:\prive\method.xml #On boucle sur chaque ligne présente en XML foreach($web in $xmlfile.webs.web){     $name=$web.nom     $lien=$web.path     $method=$web.method     $method2=$web.method2      $IIS = New-WebServiceProxy -UseDefaultCredential -Uri $lien.$method($method2) $timeTaken Measure-Command -Expression {   $site = New-WebServiceProxy -UseDefaultCredential -Uri $lien } $milliseconds $timeTaken.TotalMilliseconds $milliseconds = [Math]::Round($milliseconds1) $Metrics =@{   "CompteId" =  $IIS   "Method"$method   "Etat" = [int]'100'   "Site" $lien   "tempdereponse" = [int$milliseconds  } Write-Influx -Measure $name -Tags @{Server=$env:COMPUTERNAME} -Metrics $Metrics -Database SOAP -server http://prdparsup21:8086 -Verbose  write-host "$method"  Write-Host "$method2"  write-host "$IIS" }



et voici le fichier xml
Code:

 <webs>     <web>         <nom>x2Service.svc?wsdl</nom>         <path>http://dnsindintrawsx2services/x2Service.svc?wsdl</path>         <method>GetInfosCompte</method>         <method2>200232</method2>     </web>     <web>         <nom>x2.svc?wsdl</nom>         <path>http://dnsindintrawsx2/x2.svc?wsdl</path>         <method>GetIntervenant</method>         <method2>200232</method2>     </web>     <web>         <nom>x2FacadeService.svc?wsdl</nom>         <path>http://dnsindextrawsx2FacadeService/x2FacadeService.svc?wsdl</path>         <method>GetInfosDeclaration</method>         <method2>200232,200232</method2>     </web> </webs>     



je vous avouerais que je bloque si quelqu'un a une idée.

Merci a tous.

Message édité par: africanism78, à: 12/06/19 11:31

Message édité par: africanism78, à: 17/06/19 07:24
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5604
graph
Karma: 205  
Re:Erreur appel de methode - 12/06/19 13:32 Salut,
à priori, là où je suis je ne peux tester ce type d'accès, la création du proxy ne demande pas de nom de méthode, c'est l'objet que l'on récupère qui les porte.

J'ai qq chose comme :
Code:

 $IIs = New-WebServiceProxy -UseDefaultCredential -Uri http://dnsindintrawsx2services/x2Service.svc?wsdl.GetInfosCompte(200232)


essai:
Code:

 $IIs = New-WebServiceProxy -UseDefaultCredential -Uri http://dnsindintrawsx2services/x2Service.svc?wsdl

Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
africanism78
Utilisateur

PowerShelleur Débutant
Messages: 4
graphgraph
Karma: 0  
Re:Erreur appel de methode - 12/06/19 13:40 merci pour ta reponse

j'ai un resultat
mais ma question c'est comment lui faire repondre a une methode

Code:

 SoapVersion                          : Default AllowAutoRedirect                    False CookieContainer                      ClientCertificates                   : {} EnableDecompression                  False UserAgent                            Mozilla/4.0 (compatibleMSIE 6.0MS Web Services Client Protocol 4.0.30319.42000) Proxy                                UnsafeAuthenticatedConnectionSharing False Credentials                          System.Net.SystemNetworkCredential UseDefaultCredentials                True ConnectionGroupName                  PreAuthenticate                      False Url                                  http://dnsindintrawsx2services/x2Service.svc RequestEncoding                      Timeout                              100000 Site                                 Container                            



Message édité par: africanism78, à: 12/06/19 13:45
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5604
graph
Karma: 205  
Re:Erreur appel de methode - 12/06/19 14:46 Essaie :
Code:

  $IIS.GetInfosCompte(200232)


Tu peux aussi vérifier les méthodes disponibles avec :
Code:

  $ISS|Get-member

Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5604
graph
Karma: 205  
Re:Erreur appel de methode - 12/06/19 17:09 Un test avec un service sur le net qui répond :
Code:

  $test= New-WebServiceProxy -Uri http://www.dneonline.com/calculator.asmx?WSDL $Test|Get-member -MemberType Method


Si j'utilise une uri + un nom de méthode:
Code:

  $test= New-WebServiceProxy -Uri http://www.dneonline.com/calculator.asmx?WSDL.divide(10,2) New-WebServiceProxy Impossible de convertir «System.Object[]» en type «System.String»requis par le paramètre «Class »La méthode spécifiée n'est pas prise en charge.




[edit]
Un appel de méthode :
Code:

  $test.Divide(10,2) #5



Message édité par: Laurent Dardenne, à: 12/06/19 17:11
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
africanism78
Utilisateur

PowerShelleur Débutant
Messages: 4
graphgraph
Karma: 0  
Re:Erreur appel de methode - 13/06/19 08:22 salut,

voila je vient de testé ta methode et elle fonctionne.

Code:

 PS C:\WINDOWS\system32>  $IIS.GetIntervenant(200232,200232) DebutMision          DebutMisionSpecified True FinMission           FinMissionSpecified  True IsActif              False IsActifSpecified     True IsPAPS               False IsPAPSSpecified      True Ref                  Roles                TypeIntervenant      Autre EMail                recettes@xxx.fr Id                   200232 Nom1                 xxx xxx Nom2                 78000 Versailles 78                       PersonneId    



en me basant sur ton idée j'ai fait le test suivant.
$IIS.$method($method2,$method2)
ca fonctionne aussi.

par contre pourquoi doit ton mettre 2 fois la valeur chercher?
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5604
graph
Karma: 205  
Re:Erreur appel de methode - 13/06/19 09:46 africanism78 écrit:

par contre pourquoi doit ton mettre 2 fois la valeur chercher?

Jnsp.
Consulte la signature de la méthode:
Code:

  $IIS.GetIntervenant #et/ou $IIS|Get-member -MemberType Method

Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
africanism78
Utilisateur

PowerShelleur Débutant
Messages: 4
graphgraph
Karma: 0  
Re:Erreur appel de methode - 13/06/19 10:47 Salut,

avec ton aide j'ai reussi a obtenir ce que je voulais parfait a toi

Voici le code apres modif.

Code:

 #On récupère le fichier XML dans le TEMP [xml]$xmlfile=Get-Content c:\prive\method.xml #On boucle sur chaque ligne présente en XML foreach($web in $xmlfile.webs.web){     $name=$web.nom     $lien=$web.path     $method=$web.method     $method2=$web.method2     $method3 $web.method3          $IIS = New-WebServiceProxy -UseDefaultCredential -Uri $lien $IIS.$method($method2,$method2).$method3 $verif $IIS.$method($method2,$method2).$method3 $timeTaken Measure-Command -Expression {   $site = New-WebServiceProxy -UseDefaultCredential -Uri $lien } $milliseconds $timeTaken.TotalMilliseconds $milliseconds = [Math]::Round($milliseconds1) $Metrics =@{   "CompteId" =  $IIS   "Method"$method   "Etat" = [int]'100'   "Site" $lien   "tempdereponse" = [int$milliseconds  } if ($verif -eq $method2) { Write-Influx -Measure $name -Tags @{Server=$env:COMPUTERNAME} -Metrics $Metrics -Database SOAP -server http://prdparsup21:8086 -Verbose } else  {} }



Message édité par: africanism78, à: 13/06/19 10:47
  | | L'administrateur a désactivé l'accés public en écriture.
© 2019 PowerShell-Scripting.com