Question
[Resolu]System.Byte[] to sting
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 15 ans 10 mois #6675
par Seals
[Resolu]System.Byte[] to sting a été créé par Seals
Bonjour,
J'aimerai exporter la valeur d'un champ de l'AD, mais ceui-ci me retourne System.Byte[]
J'ai donc recherché pour convertir la valeur en String et j'ai obtenu le code suivant :
([System.BitConverter]::ToString( $user.unixUserPassword ))
Mais ca ne focntionne pas, il me retourne l'erreur suivante :
Impossible de convertir l'argument « 0 » (valeur « System.DirectoryServices.PropertyValueColle
ction ») de « ToString » en type « System.Byte[] » : « Impossible de convertir la valeur « Sys
tem.DirectoryServices.PropertyValueCollection » en type « System.Byte[] ». Erreur : « Impossib
le de convertir la valeur « System.Byte[] » du type « System.Byte[] » en type « System.Byte ».
» »
Au niveau de E:\Scripts\user\msSFU30\show_attribute_user_msSFU30Password.ps1 : 11 Caractère :
102
+ $export += ($user.displayName +\"`t\"+ $user.sAMAccountName +\"`t\"+ ([System.BitConverter]:
:ToString <<<< ( $user.unixUserPassword )) +\"`r`n\" )
+ CategoryInfo : NotSpecified: (
[], MethodException
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
Voici mon code
[code:1]$Search = New-Object DirectoryServices.DirectorySearcher([ADSI] \"LDAP://DC=mondomaine,DC=com\"«»)
$Search.filter = \"(objectCategory=user)\"
$results = $Search.Findall()
$export =\"\"
foreach ($result in $results)
{
$User = $result.GetDirectoryEntry()
$export += ($user.displayName +\"`t\"+ $user.sAMAccountName +\"`t\"+ ([System.BitConverter]::ToString( $user.unixUserPassword )) +\"`r`n\" )
}[/code:1]
Pouvez vous m'aider ?
Merci<br><br>Message édité par: Seals, à: 5/05/10 11:40
J'aimerai exporter la valeur d'un champ de l'AD, mais ceui-ci me retourne System.Byte[]
J'ai donc recherché pour convertir la valeur en String et j'ai obtenu le code suivant :
([System.BitConverter]::ToString( $user.unixUserPassword ))
Mais ca ne focntionne pas, il me retourne l'erreur suivante :
Impossible de convertir l'argument « 0 » (valeur « System.DirectoryServices.PropertyValueColle
ction ») de « ToString » en type « System.Byte[] » : « Impossible de convertir la valeur « Sys
tem.DirectoryServices.PropertyValueCollection » en type « System.Byte[] ». Erreur : « Impossib
le de convertir la valeur « System.Byte[] » du type « System.Byte[] » en type « System.Byte ».
» »
Au niveau de E:\Scripts\user\msSFU30\show_attribute_user_msSFU30Password.ps1 : 11 Caractère :
102
+ $export += ($user.displayName +\"`t\"+ $user.sAMAccountName +\"`t\"+ ([System.BitConverter]:
:ToString <<<< ( $user.unixUserPassword )) +\"`r`n\" )
+ CategoryInfo : NotSpecified: (
+ FullyQualifiedErrorId : MethodArgumentConversionInvalidCastArgument
Voici mon code
[code:1]$Search = New-Object DirectoryServices.DirectorySearcher([ADSI] \"LDAP://DC=mondomaine,DC=com\"«»)
$Search.filter = \"(objectCategory=user)\"
$results = $Search.Findall()
$export =\"\"
foreach ($result in $results)
{
$User = $result.GetDirectoryEntry()
$export += ($user.displayName +\"`t\"+ $user.sAMAccountName +\"`t\"+ ([System.BitConverter]::ToString( $user.unixUserPassword )) +\"`r`n\" )
}[/code:1]
Pouvez vous m'aider ?
Merci<br><br>Message édité par: Seals, à: 5/05/10 11:40
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 10 mois #6676
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Salut,
en .NET consulte plutot la classe System.Convert, en PowerShell :
[code:1]
[byte[]]$b=1..8
$ofs=\",\"
$b -as [string]
#ou encore
\"$b\"
[/code:1]
en .NET consulte plutot la classe System.Convert, en PowerShell :
[code:1]
[byte[]]$b=1..8
$ofs=\",\"
$b -as [string]
#ou encore
\"$b\"
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 15 ans 10 mois #6678
par Seals
Réponse de Seals sur le sujet Re:System.Byte[] to sting
Avec les exemples, je n'arrive pas à retrouner la valeur.
Il me retroune soit System.Byte[] ou alors System.DirectoryServices.PropertyValueCollection
Voici mon code :
[code:1]
([System.Convert]::ToString( $user.unixUserPassword ))
ou
\"$user.unixUserPassword\"
# retroune System.DirectoryServices.PropertyValueCollection
( $user.unixUserPassword ) -as [string] )
#retounre System.Byte[]
[/code:1]
En ayant vu ca, je suis allé sur la classe System.DirectoryServices.PropertyValueCollection et j'ai rajouté la propriété Name. Mais sans grand succes:
[code:1]([System.Convert]::ToString($user.unixUserPassword) ).name[/code:1]
Y aurait il pas un autre moyen pour la convertir ou la récupérer ?
Merci.
Il me retroune soit System.Byte[] ou alors System.DirectoryServices.PropertyValueCollection
Voici mon code :
[code:1]
([System.Convert]::ToString( $user.unixUserPassword ))
ou
\"$user.unixUserPassword\"
# retroune System.DirectoryServices.PropertyValueCollection
( $user.unixUserPassword ) -as [string] )
#retounre System.Byte[]
[/code:1]
En ayant vu ca, je suis allé sur la classe System.DirectoryServices.PropertyValueCollection et j'ai rajouté la propriété Name. Mais sans grand succes:
[code:1]([System.Convert]::ToString($user.unixUserPassword) ).name[/code:1]
Y aurait il pas un autre moyen pour la convertir ou la récupérer ?
Merci.
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 10 mois #6684
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Le membre que tu manipules est une collection spécialisée d'objet comme ici et pas un tableau (à confirmer) :
[code:1] $EL=Get-EventLog -list|? {$_.Log -match \"Windows PowerShell\"}
\"$El.Entries\"
#System.Diagnostics.EventLog.Entries
[/code:1]
visualise déjà le contenu de l'objet cible avec la fonction suivante, dispo ici :
[code:1]
Write-Properties $user.unixUserPassword
[/code:1]
Si la méthode ToString() renvoi le nom de la classe, c'est qu'elle n'est pas spécialisée.
[code:1] $EL=Get-EventLog -list|? {$_.Log -match \"Windows PowerShell\"}
\"$El.Entries\"
#System.Diagnostics.EventLog.Entries
[/code:1]
visualise déjà le contenu de l'objet cible avec la fonction suivante, dispo ici :
[code:1]
Write-Properties $user.unixUserPassword
[/code:1]
Si la méthode ToString() renvoi le nom de la classe, c'est qu'elle n'est pas spécialisée.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Seals
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 39
- Remerciements reçus 0
il y a 15 ans 10 mois #6686
par Seals
Réponse de Seals sur le sujet Re:System.Byte[] to sting
Merci pour la fonction debug.
Donc avec la fonction suivante j'obtiens :
[code:1]
[DBG]: PS U:\>>> Write-Properties ($user.unixUserPassword)
Count : 1
IsFixedSize :
IsReadOnly :
IsSynchronized :
Length :
LongLength :
Rank :
SyncRoot :
[/code:1]
Et chose que je n'avais pas vu, lors du debug, la propriété $user.unixUserPassword | Out-Host me retourne un tableau (enfin je crois) de ce type :
[code:1]
65
66
67
68
33
101
102
103
104
49
50
51
52
53
36
54
55
56
57
48
[/code:1]
et qui correspond en décimale ASCII à la chaine string de mon champ visible dans l'AD: ABCD!efgh12345$67890
Par contre je ne comprends pas pourquoi dans ce cas, il ne me donne pas la chaine denuméros lors de l'appel ?
Donc avec la fonction suivante j'obtiens :
[code:1]
[DBG]: PS U:\>>> Write-Properties ($user.unixUserPassword)
Count : 1
IsFixedSize :
IsReadOnly :
IsSynchronized :
Length :
LongLength :
Rank :
SyncRoot :
[/code:1]
Et chose que je n'avais pas vu, lors du debug, la propriété $user.unixUserPassword | Out-Host me retourne un tableau (enfin je crois) de ce type :
[code:1]
65
66
67
68
33
101
102
103
104
49
50
51
52
53
36
54
55
56
57
48
[/code:1]
et qui correspond en décimale ASCII à la chaine string de mon champ visible dans l'AD: ABCD!efgh12345$67890
Par contre je ne comprends pas pourquoi dans ce cas, il ne me donne pas la chaine denuméros lors de l'appel ?
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 10 mois #6687
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:System.Byte[] to sting
Seals écrit:
Essaie ceci, sinon ton code affiche l'objet collection et pas l'objet contenu :
[code:1]
Write-Properties $user.unixUserPassword[0]
[/code:1]
il se peut qu'il faille adresser un membre, par exemple $user.unixUserPassword.Value
Seals écrit:
Seals écrit:
De rien, tu peux la coupler avec l'outil debugview ( dispos sur sysinternal).Merci pour la fonction debug.
Essaie ceci, sinon ton code affiche l'objet collection et pas l'objet contenu :
[code:1]
Write-Properties $user.unixUserPassword[0]
[/code:1]
il se peut qu'il faille adresser un membre, par exemple $user.unixUserPassword.Value
Seals écrit:
Oui, c'est un tableau de Char, d'où le type System.Byte[] renvoyé à l'origine.qui correspond en décimale ASCII à la chaine string de mon champ visible dans l'AD
Seals écrit:
Je n'ai pas compris.Par contre je ne comprends pas pourquoi dans ce cas, il ne me donne pas la chaine de numéros lors de l'appel ?
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.108 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Resolu]System.Byte[] to sting