Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1564 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [PowerShell] Aide syntaxe PS et affichage de résultats byte/texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PowerShell] Aide syntaxe PS et affichage de résultats byte/texte

n°2476104
darxmurf
meow
Posté le 22-07-2024 à 17:13:32  profilanswer
 

Salut,

 

Je tente un script PS pour sortir les utilisateurs (uid) membre d'un certain groupe (ou) d'un ldap dans lequel je peux taper de manière anonyme depuis une machine qui n'est pas dans l'AD
En shell sous linux, ça me prend une ligne avec ldapsearch et je dois dire que j'ai de la peine à comprendre la procédure avec PS.

 

Voilà mon code fonctionnel

 
Code :
  1. [System.Reflection.Assembly]::Load("System.DirectoryServices.Protocols, version=4.0.0.0, culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ) | Out-Null
  2. [System.Reflection.Assembly]::Load("System.Net, version=4.0.0.0, culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ) | Out-Null
  3. $myserver=New-Object System.DirectoryServices.Protocols.LdapDirectoryIdentifier("ldap.cogip.com:636" )
  4. $connection = New-Object System.DirectoryServices.Protocols.LdapConnection($myserver)
  5. $connection.SessionOptions.SecureSocketLayer = $true;
  6. $connection.SessionOptions.ProtocolVersion = 3
  7. $connection.AuthType = [System.DirectoryServices.Protocols.AuthType]::Anonymous
  8. $connection.Bind()
  9. $request = new-object System.DirectoryServices.Protocols.SearchRequest
  10. $request.DistinguishedName = "ou=pif, ou=paf"
  11. $request.Filter = "(&(ObjectClass=posixAccount)(ou=mongroupe))"
  12. $request.Attributes.Add("uid" ) | Out-Null
  13. $mydata = $connection.SendRequest($request);
  14. foreach ($myuserinfo in $mydata.Entries.Attributes) {
  15.     $username = [string]$myuserinfo["uid"][0] -replace '@.+$',''
  16.     $username
  17. }
  18. $connection.Dispose()
 

J'ai passé une demi journée pour réussir à faire fonctionner ce truc, j'ai tenté d'autre méthodes avec un objet  System.DirectoryServices.DirectorySearcher mais impossible d'en sortir quoi que ce soit.

 

Les questions qui se posent sont les suivantes:

 

Pour les lignes de chargement de modules/libraries

Code :
  1. [System.Reflection.Assembly]::Load("System.DirectoryServices.Protocols, version=4.0.0.0, culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ) | Out-Null
  2. [System.Reflection.Assembly]::Load("System.Net, version=4.0.0.0, culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" ) | Out-Null


Que signifie cette syntaxe de [....]::Load... ?
Y a t'il un équivalent avec qqch du genre

Code :
  1. $mylib = new-object System.Reflection.Assembly.Load("System.Net" )...


Ou ça n'a aucun lien ?

 

Avant d'utiliser Assembly.load, j'utilisais Assembly.LoadWithPartialName mais MS nous dit que c'est obsolète et qu'il faut utiliser Asembly.Load, sans aucune autre info. Par bol j'ai trouvé un gus qui explique le chargement de la librairie en allant fouiller dans les dossier windows pour trouver les versions des lib mais y a t'il une doc qui explique ça quelque part ? Parce qu'à part être devin, j'ai des doutes que les gens comprennent ça du premier coup.

 

Une fois ma requête lancée, je récupère mon objet "SearchRequest" mais quand j'essaie d'afficher le contenu, c'est relativement incompréhensible.

 
Code :
  1. $mydata.Entries| Format-list


Me sort un bloc d'info en une ligne donc pas vraiment lisible

 

J'ai tenté ensuite

Code :
  1. $mydata.Entries.Attributes | Format-list
 

Mais ça me crache du byte code [:gnub] qqn peut m'expliquer pourquoi ? Ok, certaines personnes ont plusieurs UID (username, username@group2, username@group3) mais c'est quoi l'idée avec cette conversion ?

 

Et pourquoi le simple fait de forcer le premier élément de l'UID avec $myuserinfo["uid"][0] suffit à afficher ça en "clair" ? Y a t'il une autre méthode ? Je suis tombé sur un bout de code mais le type crée une fonction et son code fait limite 2 pages pour afficher une simple donnée LDAP [:gnub], ça me parait un peu violent quand même.

 

Je suis clairement un noob en PS vu que je fais que du shell unix mais je dois dire que la syntaxe de ce langage est n'est vraiment clair et quand on veut faire des trucs un peu particulier du genre taper dans un LDAP depuis une machine non-AD, c'est la foire complète pour trouver du code qui fonctionne.

 

Merci d'avance pour vos explications :jap:


Message édité par darxmurf le 22-07-2024 à 17:27:33

---------------
Des trucs - flickr - Instagram
mood
Publicité
Posté le 22-07-2024 à 17:13:32  profilanswer
 

n°2476143
darxmurf
meow
Posté le 23-07-2024 à 08:27:04  profilanswer
 

okay, en fouillant un peu, on trouve une autre solution moins lourde
 

Code :
  1. $domain = "LDAP://ldap.cogip.com:636/c=ch"
  2. $root = New-Object -TypeName System.DirectoryServices.DirectoryEntry($domain,$null,$null,"anonymous" )
  3. $query = New-Object System.DirectoryServices.DirectorySearcher($root,"(&(ObjectClass=posixaccount)(ou=mongroupe))","uid" )
  4. $result = $query.FindAll()
  5. $result.Properties.uid


 
 
La clareté de ce language est fantastique [:tinostar]


---------------
Des trucs - flickr - Instagram
n°2476177
rat de com​bat
attention rongeur méchant!
Posté le 23-07-2024 à 21:17:05  profilanswer
 

darxmurf a écrit :

La clareté de ce language est fantastique [:tinostar]

C'est ce que je me dis à chaque fois quand je vois du PS. :o Bien content de ne pas devoir toucher à ça... :whistle:


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2476206
darxmurf
meow
Posté le 23-07-2024 à 23:53:56  profilanswer
 

rat de combat a écrit :

C'est ce que je me dis à chaque fois quand je vois du PS. :o Bien content de ne pas devoir toucher à ça... :whistle:

 

Nan mais apparemment tu peux utiliser des abréviations pour aider... Ou pas [:tinostar]


---------------
Des trucs - flickr - Instagram
n°2476905
gilou
Modérateur
Modzilla
Posté le 30-07-2024 à 13:55:11  profilanswer
 

rat de combat a écrit :

C'est ce que je me dis à chaque fois quand je vois du PS. :o Bien content de ne pas devoir toucher à ça... :whistle:

Pareil.
Même Perl est plus lisible  [:virginie]  
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2476935
darxmurf
meow
Posté le 30-07-2024 à 15:50:31  profilanswer
 

gilou a écrit :

Pareil.
Même Perl est plus lisible  [:virginie]  
A+,


 
Merci de me rassurer les gars [:tinostar].
Bon au final je n'ai pas eu besoin de ce foutu script \o/


---------------
Des trucs - flickr - Instagram
n°2476967
rat de com​bat
attention rongeur méchant!
Posté le 30-07-2024 à 19:07:24  profilanswer
 

gilou a écrit :

Même Perl est plus lisible  [:virginie]

Sauf si on parle https://en.wikipedia.org/wiki/Obfuscated_Perl_Contest  :whistle:  
 
Sérieusement, je suis toujours vexé que ce soit Python qui a emporté la course très visiblement. Je n'arrive pas à me faire à ce language, les vrais barbus font du Perl! :o


---------------
Ne laissez pas mourir vos sujets en cours de route!
n°2476968
darxmurf
meow
Posté le 30-07-2024 à 21:23:46  profilanswer
 

rat de combat a écrit :

Sauf si on parle https://en.wikipedia.org/wiki/Obfuscated_Perl_Contest :whistle:

 

Sérieusement, je suis toujours vexé que ce soit Python qui a emporté la course très visiblement. Je n'arrive pas à me faire à ce language, les vrais barbus font du Perl! :o

 

Pff j'ai commencé un peu le python parce que c'est tendance mais je peux tellement tout faire en shell que je n'avance pas [:tinostar]


---------------
Des trucs - flickr - Instagram

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [PowerShell] Aide syntaxe PS et affichage de résultats byte/texte

 

Sujets relatifs
Résultats des 6 derniers mois[Powershell] Supprimer un type de record DNS (windows server)
[PowerShell]Récupérer la disposition clavier active (résolu)[Powershell] Nom sur une boucle foreach ?
[Powershell] Passer un tableau de paramètres plutôt qu'une énumérationAfficher une image selon la date et avec lien hyper texte
[Powershell] Commande Enter-PSSession OK, Invoke-Command NOK[Powershell] Résultat RegExp incorrect (bug?)
Affichage du z-bufferRegrouper plusieurs résultats sur une seule ligne
Plus de sujets relatifs à : [PowerShell] Aide syntaxe PS et affichage de résultats byte/texte


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR