Question Changer le format d'une colonne lors d'un export CSV

Plus d'informations
il y a 1 an 10 mois #32826 par Julien
Bonjour,

Je souhaiterais pouvoir changer, lors de l'export CSV, le format d'une colonne.

Je m'explique : Dans un script powershell, je récupère pour chaque membre, la valeur de l'attribut ObjectSID via $ObjSID = (Get-AdUser $member.SamAccountName).SID.Value

Info : lorsque je fais $test = $ObjSID.GetType() j'obtiens un system.object de type String

Mon problème est que pour la bonne exécution d'un outil qui se base sur cette extraction, j'aurais besoin de pouvoir convertir le format de sortie de cette colonne "ObjectSID" au format texte.

Actuellement, lorsque je consulte mon fichier de sortie CSV généré par powershell, la colonne se trouve avec comme format de nombre "standard" et mon outil l'interpréte mal. J'aurais besoin de pouvoir mettre comme format de nombre "texte" directement depuis le script powershell, sans avoir à aller toucher manuellement à la colonne dans le fichier résultat.

Je ne trouve pas de moyen de le faire.

Quelqu'un aurait il une idée ?

Merci d'avance

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

Plus d'informations
il y a 1 an 10 mois #32827 par Laurent Dardenne
Salut,
>> la colonne se trouve avec comme format de nombre "standard"
le CSV ne gère que des String. la notion de standard est plutôt côté Excel ( est-ce ton outil ?).
As-tu un exemple du résultat actuel et celui attendu ?
Une solution étant de transformer, dans un pipeline, le format de la valeur de la propriété à exporter.

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 10 mois #32829 par Julien
Bonjour Laurent,

En fait, je me sert d'un vieil outil développé en vbs et qui me permet, avec un certain nombre de fichiers d'extractions (tous en CSV) d'analyser ce que possède un utilisateur comme droits, comptes applicatifs etc...

Mon problème se situe justement sur l'export que je génère actuellement via mon script powershell sur cette colonne. Il s'agit de l'objectSID d'un user.

Voici le script :

$Ous= @('xxxxxx')

$TotalOus = $Ous.Count

$result = @()
$i = 1

ForEach ($NomOU in $Ous) {

if ($NomOU -like "*,DC=xxxx,DC=xxx*"){

$NomOUsub = $NomOU.Replace(",DC=xxxx,DC=xxx","")

}

Write-Progress -Activity "Traitement de l'OU '$($NomOU)'" -Status "$i ème OU sur un total de $TotalOus OUs traitées"
$arrMembers = @( Get-ADUser -Filter {(ObjectClass -eq "user")} -SearchBase $NomOU -Properties * -server "xxxx.dom" )

foreach($member in $arrMembers) {

$ObjSID = (Get-AdUser $member.SamAccountName).SID.Value -join ';'

$PostOffice = $member.postOfficeBox -join ';'

$obj = $member | Select-Object -Property @{Name = 'OU' ; Expression = {$NomOUsub}}, @{Name = 'class' ; Expression = {$_.objectClass}},sn,sAMAccountName,userPrincipalName,@{Name = 'Expiration' ; Expression = {$_.AccountExpirationDate}},displayName,@{Name = 'Bureau' ; Expression = {$_.physicalDeliveryOfficeName}},mail,@{Name = 'Title' ; Expression = {$_.title}},department,company,@{Name = 'Ville' ; Expression = {$_.l}},@{Name = 'Sid' ; Expression = {$ObjSID}}


if ($member.mail -eq "" -or $member.mail -eq $null){
$OptionMAPI="SANS BAL"
} elseif ($member.msExchHideFromAddressLists -eq $true) {
$OptionMAPI="MASQUE"
} else{
$OptionMAPI="NON MASQUE"
}

$obj | Add-Member -MemberType NoteProperty -Name "Option Masquée" -Value $OptionMAPI
$obj | Add-Member -MemberType NoteProperty -Name "Description" -Value $member.Description
$obj | Add-Member -MemberType NoteProperty -Name "BP" -Value $PostOffice
$obj | Add-Member -MemberType NoteProperty -Name "Givename" -Value $member.GivenName
$obj | Add-Member -MemberType NoteProperty -Name "employeeNumber" -Value $member.EmployeeNumber

$result += $obj

}
$i++
}

$result | Export-Csv -Path "test.csv" -UseCulture -NoTypeInformation


Voici un exemple de ce qui est généré en sortie CSV :

OU class sn sAMAccountName userPrincipalName Expiration displayName Bureau mail Title department company Ville Sid Option Masqu?e Description BP Givename employeeNumber
OU=xxxx user xx mc.xx Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. Marie-Christine XXX Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser. 9949 TOULOUSE xxxx TOULOUSE S-1-5-21-1994217959-1242580130-3987828224-361394 NON MASQUE @SYNCH aedf483f-be78-4260-8c63-e72c6dc82ad2 Marie-Christine 9949


Ce qui m'intéresse ici c'est donc la colonne "Sid" dont valeur dans l'exemple est "S-1-5-21-1994217959-1242580130-3987828224-361394"

La cellule est au format "Standard" et je souhaiterais donc qu'elle soit directement en type "texte" depuis mon script.

Merci pour ton aide.

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

Plus d'informations
il y a 1 an 10 mois #32830 par Laurent Dardenne
Désolé mais je ne comprend pas trop ton problème :-/
Ceci surtout :
La cellule est au format "Standard" et je souhaiterais donc qu'elle soit directement en type "texte" depuis mon script.

La propriété SID comme tu l'as dit est de type string, elle est donc pour moi directement en type 'texte'...

Donc on a "S-1-5-21-1994217959-1242580130-3987828224-361394" en entrée que dois-tu avoir en 'sortie' ?

L'opérateur -Join est-il nécessaire ici ?
$ObjSID = (Get-AdUser $member.SamAccountName).SID.Value -join ';'

Est-ce ceci que tu recherches ?

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 10 mois #32831 par Julien
La valeur de la colonne SID dans mon export csv est la bonne. En revanche, pour une raison que j'ignore, si je change le format de la colonne de "standard" à "texte", mon outil marche bien.

Je cherche en fait à savoir s'il y a une possibilité, depuis powershell, pour forcer le formatage d'une colonne csv particulière.
Peut être n'est ce pas du tout possible ?

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

Plus d'informations
il y a 1 an 10 mois #32832 par Laurent Dardenne
A priori, c'est le soft tier qui pose problème, essaie en insérant des doubles ou simple quote autour du SID.

Tutoriels PowerShell

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

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