Question [Resolu]System.Byte[] to sting

Plus d'informations
il y a 13 ans 11 mois #6698 par Seals
Réponse de Seals sur le sujet Re:System.Byte[] to sting
Y a pas de problème... Je me demande même parfois comment tu fais pour être aussi réactif :)

Voici le code d'erreur :
[code:1][DBG]: PS U:\>>> $Strb=new-object System.Text.StringBuilder
$user.unixUserPassword|% {[void]$Strb.Append([char]$_)}
$Strb.ToString()
Impossible de convertir la valeur « System.Byte[] » du type « System.Byte[] » e
n type « System.Char ».
Au niveau de ligne : 2 Caractère : 54
+ $user.unixUserPassword|% {[void]$Strb.Append([char]$_ <<<< )}
+ CategoryInfo : NotSpecified: (:«») [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException

[/code:1]

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

Plus d'informations
il y a 13 ans 11 mois #6699 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Seals écrit:

Je me demande même parfois comment tu fais pour être aussi réactif :)

En ce moment je ne suis pas en poste ;)
Seals écrit:

Voici le code d'erreur :

:S
J'en ai oublié un bout je crois, essai ceci :
[code:1] $Strb=new-object System.Text.StringBuilder
$user.unixUserPassword.GetEnumerator()|% {[void]$Strb.Append([char]$_)}
$Strb.ToString()[/code:1]

Si cela ne fonctionne tjr pas, peux-tu joindre un fichier d'export Xml (Export-Clixml) de l'objet $user.unixUserPassword ?<br><br>Message édité par: Laurent Dardenne, à: 4/05/10 17:04

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 11 mois #6700 par Seals
Réponse de Seals sur le sujet Re:System.Byte[] to sting
Toujours pas concluant.
[code:1][DBG]: PS U:\&gt;&gt;&gt; $Strb=new-object System.Text.StringBuilder
$user.unixUserPassword.GetEnumerator()|% {[void]$Strb.Append([char]$_)}
$Strb.ToString()
Impossible de convertir la valeur « System.Byte[] » du type « System.Byte[] » e
n type « System.Char ».
Au niveau de ligne : 2 Caractère : 70
+ $user.unixUserPassword.GetEnumerator()|% {[void]$Strb.Append([char]$_ &lt;&lt;&lt;&lt; )}
+ CategoryInfo : NotSpecified: (:«») [], RuntimeException
+ FullyQualifiedErrorId : RuntimeException
[/code:1]

Sinon, je te joins le fichier xml. Mais le contenu n'est pas enorme.
Merci

La pièce jointe unixUserPassword.txt est absente ou indisponible




Au cas ou ca ne fonctionne pas (la pj) :
[code:1]&lt;Objs Version=\&quot;1.1.0.1\&quot; xmlns=\&quot;schemas.microsoft.com/powershell/2004/04\">;
&lt;Obj RefId=\&quot;0\&quot;&gt;
&lt;TN RefId=\&quot;0\&quot;&gt;
&lt;T&gt;System.DirectoryServices.PropertyValueCollection&lt;/T&gt;
&lt;T&gt;System.Collections.CollectionBase&lt;/T&gt;
&lt;T&gt;System.Object&lt;/T&gt;
&lt;/TN&gt;
&lt;LST&gt;
&lt;BA&gt;QUJDRCFlZmdoMTIzNDUkNjc4OTA=&lt;/BA&gt;
&lt;/LST&gt;
&lt;/Obj&gt;
&lt;/Objs&gt;[/code:1]<br><br>Message édité par: Seals, à: 5/05/10 08:16
Pièces jointes :

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

Plus d'informations
il y a 13 ans 11 mois #6701 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Seals écrit:

Toujours pas concluant.

Oui, mon erreur était de considérer que la collection contenait n éléments alors qu'elle en contient un seul qui est un tableau de byte représentant une string.
Ceci devrait fonctionner :
[code:1][String][Char[]]$$user.unixUserPassword[0][/code:1]
Ce code fonctionne si j'importe l'objet :
[code:1]
$o=import-clixml unixUserPassword.xml
$o
[String][Char[]]$o[0]
#UneChaîne
[/code:1]
Peut être faudra-t-il changer le mot de passe, si toutefois tu ne l'avais pas déjà fait dans le fichier XML.

Tutoriels PowerShell

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

Plus d'informations
il y a 13 ans 11 mois #6702 par Seals
Réponse de Seals sur le sujet Re:[Resolu]System.Byte[] to sting
Ca fonctionne très bien. je retrouve le mot de passe.:laugh:

Par contre, hier, tu étais proche de la solution. Tu m'avais indiqué:

[String][Char[]]$user.unixUserPassword


Peux tu m'expliquer la différence ?
puisque les deux sont des tableaux ou tu spécifies juste la première position dans un cas.

Merci...<br><br>Message édité par: Seals, à: 5/05/10 11:33

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

Plus d'informations
il y a 13 ans 11 mois #6703 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Seals écrit:

puisque les deux sont des tableaux ou tu spécifies juste la première position dans un cas.

Dans le premier cas, sans index, on accéde à l'objet collection, dans le dernier cas on accède à un des objets de la collection, puisque celle-ci est \&quot;indéxable\&quot;( voir ce post ).

Et pour la conversion on est obligé de caster d'abord le tableau de byte en un tableau de char, puis en string, celle-ci étant implicitement un tableau de char.
PowerShell est dynamique et non typé, mais si on manipule des objets dotnet, celui-ci étant fortement typé, on est obligé de passer par ces casts (transtypage). (sous PS on parle plutot de variable contrainte sur le type)

ça été un peu laborieux, mais une fois qu'on connait le type de l'objet que l'on manipule, la solution pointe le bout de son nez :)<br><br>Message édité par: Laurent Dardenne, à: 5/05/10 11:41

Tutoriels PowerShell

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

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