Question Redirection d'un Get dans un tabeau

Plus d'informations
il y a 15 ans 2 mois #8524 par Butler
oui effectivement les autres requêtes ne sont pas indispensable.

Ta solution fonctionne bien, du moins je pense.
Lorsque j’essaie, un problème survient lors de la concaténation pour former le corps du mail

donc, ton code
[code:1]
$objAD | Sort-Object -Property Name| foreach {
$user += $_ | Format-table Name, SamAccountName, accountExpires, email | out-String ;
$user_detail += $_ | Format-list Name, SamAccountName, accountExpires, email, DN | out-String;
}
[/code:1]

[code:1]$body_exploit = $corps_exploit += $user += $user_detail

Method invocation failed because [Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject] doesn't contain a method na
med 'op_Addition'.
At R:\Ne_pas_effacer\Projets\powershell\expiration compte AD\exipiration_compte_AD_dev.ps1:59 char:21
+ $user += <<<< $_ | Format-list Name, SamAccountName, accountExpires, email | out-String
+ CategoryInfo : InvalidOperation: (op_Addition:«»String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

[/code:1]
avec
$body_exploit = $corps_exploit += $user
$body_exploit = $body_exploit += $user_detail
je n'est plus l'erreur mais je ne récupère plus complètement mon $user

avec un echo $user j'obtiens
[code:1]
Name Type DN
---- ---- --
Benoit DELIONNET user CN=Benoit XXXX,OU=Users Exploitation,OU=S_SIT,DC=XXX,DC=XXX,...

au lieux de

Liste des comptes arrivant à expiration avant le 08/03/11

Name SamAccountName AccountExpires Email
----


XXX CHDC 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX1 GRNM 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX2 xxxx 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX3 TDRG 29/01/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX4 CHUS 18/01/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX5 BLYN 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX6 RGEL 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX8 DLTB 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

[/code:1]
$user_détail est lui correct :/

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

Plus d'informations
il y a 15 ans 2 mois #8525 par Butler
oui effectivement les autres requêtes ne sont pas indispensable.

Ta solution fonctionne bien, du moins je pense.
Lorsque j’essaie, un problème survient lors de la concaténation pour former le corps du mail

donc, ton code
[code:1]
$objAD | Sort-Object -Property Name| foreach {
$user += $_ | Format-table Name, SamAccountName, accountExpires, email | out-String ;
$user_detail += $_ | Format-list Name, SamAccountName, accountExpires, email, DN | out-String;
}
[/code:1]

[code:1]$body_exploit = $corps_exploit += $user += $user_detail

Method invocation failed because [Quest.ActiveRoles.ArsPowerShellSnapIn.Data.ArsUserObject] doesn't contain a method na
med 'op_Addition'.
At R:\Ne_pas_effacer\Projets\powershell\expiration compte AD\exipiration_compte_AD_dev.ps1:59 char:21
+ $user += <<<< $_ | Format-list Name, SamAccountName, accountExpires, email | out-String
+ CategoryInfo : InvalidOperation: (op_Addition:«»String) [], RuntimeException
+ FullyQualifiedErrorId : MethodNotFound

[/code:1]
avec
$body_exploit = $corps_exploit += $user
$body_exploit = $body_exploit += $user_detail
je n'est plus l'erreur mais je ne récupère plus complètement mon $user

avec un echo $user j'obtiens
[code:1]
Name Type DN
---- ---- --
Benoit DELIONNET user CN=Benoit XXXX,OU=Users Exploitation,OU=S_SIT,DC=XXX,DC=XXX,...

au lieux de

Liste des comptes arrivant à expiration avant le 08/03/11

Name SamAccountName AccountExpires Email
----


XXX CHDC 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX1 GRNM 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX2 xxxx 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX3 TDRG 29/01/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX4 CHUS 18/01/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX5 BLYN 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX6 RGEL 01/03/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.
XXX8 DLTB 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

[/code:1]
$user_détail est lui correct :/

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

Plus d'informations
il y a 15 ans 2 mois #8526 par blanc
bonjour,
Il semble que l'objet $user ne soit pas converti en string.
Hier soir j'ai fait un essai avec des objets plus simples que sont les cartes réseaux (obtenues via wmi) et je n'avais pas ce problème.
Pour tenter une conversion dans le foreach :
$_ | Format-list Name, SamAccountName, accountExpires, email | out-string | foreach{$userTXT += $_}
Le premier $_ représente un élément de objetAD, le second $_ devrait être la chaine en sortie de out-string. Si tu peux mettre $userTXT et l'afficher en fin de foreach \"principal\"...le nom de la variable $user existe-t-il en début de ton script...ce qui expliquerait que $userdetail soit correct.
Bigre. Dommage que je n'ai pas les modules de AD.
Désolé.

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

Plus d'informations
il y a 15 ans 2 mois #8528 par Butler
donc j'ai essayer divers variantes au mieux j'obtiens les information formaté comme ceci, ce qui je pense, est logique vue qu'on effectue lecture de l'objet ....
(j'avais bien un $user déclarer dans le 1er foreach)

[code:1]
$objAD | Sort-Object -Property Name| foreach {
$users += $_ | Format-table Name, SamAccountName, accountExpires, email | out-String | foreach{$userTXT += $_};
$user_detail += $_ | Format-list Name, SamAccountName, accountExpires, email, DN | out-String;

}
Write-Output $userTXT
Name SamAccountName AccountExpires Email
----


Benoit XXXX DLTB 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

Name SamAccountName AccountExpires Email
----


Cedric XXX RPEC 01/02/2011 00:00:00 Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

[/code:1]
J'ai fait divers tests et je voudrais continuer, mais je n'aurais accès à l'AD pendant une semaine :( (bts par alternance)
Dans tout les cas merci pour votre aide à tous, c'est très instructif :)

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

Plus d'informations
il y a 15 ans 2 mois #8530 par blanc
bonsoir,
Avec les objets de WinNT, cela devrait être identique.
Là, il m'a fallu ouvrir le livre de \"gauche\";)
[code:1]$computer = [ADSI](\"WinNT://.\"«»)
$computer.name
$Users = $computer.psbase.children |where{$_.psbase.schemaclassname -eq \"User\"}
$Users
#cas 1
$ListePourLeSupport+=$users|Format-table Name, Description|out-string
# cas 2 : ce que je faisais hier
$ListePourLeSupport+=$users|foreach{$_|Format-table Name, Description|out-string}[/code:1]
Faut juste exprimer en mots le contenu des 2 commandes pour comprendre la différence.

Je vais tenter la traduction genre \"petit nègre\" :
cas 1 :
$users envoie le premier objet dans le pipe
format-table le récupère.
format-table demande l'objet suivant
$users lui envoie le second objet
...
$users envoie le dernier objet
format-table fait la mise en page (entête + chaque ligne)
cas 2 :
$users envoie le premier objet
foreach le récupère et l'envoie à format-table
format-table demande le suivant
foreach lui dit qu'il n'y en a pas d'autre
format-table fait la mise en page
foreach demande l'objet suivant
$users envoie le second
...

Une autre manière de formuler plus genre \"petit gris\":
cas 1 :
$users envoie tous ces objets en une fois
format-table les analyse un par un pour ne prendre que les propriétés à afficher (et donc c'est l'affichage que tu souhaitais)
cas 2:
$users envoie ses objets en une fois
foreach tronçonne le paquet et les envoie un par un
format-table voit donc arriver un objet à chaque fois et en fait la mise en page. donc plein de mise en page avec chaque fois l'en-tête.
A posteriori, il est toujours facile de trouver une traduction. Pour la bonne, faut compter sur un pro.
Et d'ailleurs faudra attendre pour savoir si ce que j'avance du haut de ma chaise de nain apporte une solution à ton tableau.
Salutation.

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

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