Question
Ajout de retour chariot dans une cellule CSV
- Amir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 6 mois #15734
par Amir
Ajout de retour chariot dans une cellule CSV a été créé par Amir
Bonsoir à tous,
Je cherche à effectuer un formatage propre en sortie dans un CSV avec pour deux champs particuliers la possibilité que des retour chariot soit inséré en sortie (insertion dans le script).
Je suis tombé sur un article de microsoft technet.microsoft.com/fr-fr/library/ms155919(v=sql.100).aspx
Mais ce qu'il indiquent pour le retour chariot ne fonctionne pas.
J'ai pris du code sur le web que j'ai adapté mais la je tombe sur un pépin pour le formatage des champs Droits_NTFS & Droits_Partage. Les deux lignes en gras ci-dessous ce sont les elements du tableau pour lesquels je cherche à faire un retour chariot.
Function Get-AllShares{
$a = Get-WmiObject win32_share -computername $server -Filter \"type=0\"
Return $a
} # End Get-AllShares Function
Function Get-SharePermissions($machine,$ShareName){
$Share = Get-WmiObject win32_LogicalShareSecuritySetting -computername \"$machine\" -Filter \"name='$ShareName'\"
$SHare
if($Share){
$obj = @()
$ACLS = $Share.GetSecurityDescriptor().Descriptor.DACL
foreach($ACL in $ACLS){
$User = $ACL.Trustee.Name
if(!($user)){$user = $ACL.Trustee.SID}
$Domain = $ACL.Trustee.Domain
switch($ACL.AccessMask)
{
2032127 {$Perm = \"Full Control\"}
1245631 {$Perm = \"Change\"}
1179817 {$Perm = \"Read\"}
}
$obj = $obj + \"$Domain\$user $Perm\"
}
}
if(!($Share)){$obj = \" ERROR: cannot enumerate share permissions. \"}
Return $obj
} # End Get-SharePermissions Function
Function Get-NTFSPerms($machine,$NTFSPath){
$Directory = Get-WmiObject win32_LogicalFileSecuritySetting -computername \"$machine\" -Filter \"path='$NTFSPath'\"
$directory
if ($directory) {
$obj = @()
$ACLS = $Directory.GetSecurityDescriptor().Descriptor.DACL
foreach($ACL in $ACLS){
$User = $ACL.Trustee.Name
if(!($user)){$user = $ACL.Trustee.SID}
$Domain = $ACL.Trustee.Domain
switch($ACL.AccessMask)
{
2032127 {$NTPerm= “FullControl”}
1179785 {$NTPerm = “Read”}
1180063 {$NTPerm = “Read, Write”}
1179817 {$NTPerm = “ReadAndExecute”}
-1610612736 {$NTPerm = “ReadAndExecuteExtended”}
1245631 {$NTPerm = “ReadAndExecute, Modify, Write”}
1180095 {$NTPerm = “ReadAndExecute, Write”}
268435456 {$NTPerm = “FullControl (Sub Only)”}
default {$NTPerm = $ACL.AccessMask}
}
$obj = $obj + \"$Domain\$user $NTPerm \"
}
}
Return $obj
if(!($SDirectory)){$obj = \" ERROR: cannot enumerate NTFS permissions. \"}
} # End Get-NTFSPerms Function
function Change_Path ($chemin) {
$path=$chemin
$retour=$path.replace(\"\\",\"\\\")
return $retour
} # End-ConvertingPath for NTFSPermissions
$test=$args
[array]$i= get-content $test
Foreach ($server in $i) {
$Share= Get-AllShares
[array]$MainShares = $MainsShares + $share
[array]$TEST = $TEST + $MainShares
}
#$TEST| select-object __SERVER, name,path,description | ft
Foreach($MainShare in $TEST){
$MainShareName = $MainShare.Name
$MainServer = $MainShare.__SERVER
$MainDescription = $MainShare.Description
$MainLocation = $MainShare.Path
$Pathtochange = Change_Path $MainLocation
$MainNTFSPermissions = Get-NTFSPerms $MainServer $PathToChange
$NTFSPerm= $MainNTFSPermissions[1..($MainNTFSPermissions.length-1)]
$MainSharePermissions = Get-SharePermissions -machine $MainServer -ShareName $MainShareName
$SharePerm = $MainSharePermissions[1..($MainSharePermissions.length-1)]
$resultTemp = New-Object PSObject
$resultTemp | Add-Member NoteProperty -name Machine -value $MainServer
$resultTemp | Add-Member NoteProperty -name Partage -value $MainShareName
$resultTemp | Add-Member NoteProperty -name Chemin -value $MainLocation
$resultTemp | Add-Member NoteProperty -name Description -value $MainDescription
$resultTemp | Add-Member NoteProperty -name Droits_Partage -value \"$SharePerm\"
$resultTemp | Add-Member NoteProperty -name Droits_NTFS -value \"$NTFSPerm\"
[PSObject[]]$export += [PSObject]$resultTemp
$export | select Machine, Partage, Chemin, Description, Droits_Partage, Droits_NTFS | Export-Csv -delimiter \";\" -notypeinformation -path extract.csv
}
D'avance merci pour votre aide.
Je cherche à effectuer un formatage propre en sortie dans un CSV avec pour deux champs particuliers la possibilité que des retour chariot soit inséré en sortie (insertion dans le script).
Je suis tombé sur un article de microsoft technet.microsoft.com/fr-fr/library/ms155919(v=sql.100).aspx
Mais ce qu'il indiquent pour le retour chariot ne fonctionne pas.
J'ai pris du code sur le web que j'ai adapté mais la je tombe sur un pépin pour le formatage des champs Droits_NTFS & Droits_Partage. Les deux lignes en gras ci-dessous ce sont les elements du tableau pour lesquels je cherche à faire un retour chariot.
Function Get-AllShares{
$a = Get-WmiObject win32_share -computername $server -Filter \"type=0\"
Return $a
} # End Get-AllShares Function
Function Get-SharePermissions($machine,$ShareName){
$Share = Get-WmiObject win32_LogicalShareSecuritySetting -computername \"$machine\" -Filter \"name='$ShareName'\"
$SHare
if($Share){
$obj = @()
$ACLS = $Share.GetSecurityDescriptor().Descriptor.DACL
foreach($ACL in $ACLS){
$User = $ACL.Trustee.Name
if(!($user)){$user = $ACL.Trustee.SID}
$Domain = $ACL.Trustee.Domain
switch($ACL.AccessMask)
{
2032127 {$Perm = \"Full Control\"}
1245631 {$Perm = \"Change\"}
1179817 {$Perm = \"Read\"}
}
$obj = $obj + \"$Domain\$user $Perm\"
}
}
if(!($Share)){$obj = \" ERROR: cannot enumerate share permissions. \"}
Return $obj
} # End Get-SharePermissions Function
Function Get-NTFSPerms($machine,$NTFSPath){
$Directory = Get-WmiObject win32_LogicalFileSecuritySetting -computername \"$machine\" -Filter \"path='$NTFSPath'\"
$directory
if ($directory) {
$obj = @()
$ACLS = $Directory.GetSecurityDescriptor().Descriptor.DACL
foreach($ACL in $ACLS){
$User = $ACL.Trustee.Name
if(!($user)){$user = $ACL.Trustee.SID}
$Domain = $ACL.Trustee.Domain
switch($ACL.AccessMask)
{
2032127 {$NTPerm= “FullControl”}
1179785 {$NTPerm = “Read”}
1180063 {$NTPerm = “Read, Write”}
1179817 {$NTPerm = “ReadAndExecute”}
-1610612736 {$NTPerm = “ReadAndExecuteExtended”}
1245631 {$NTPerm = “ReadAndExecute, Modify, Write”}
1180095 {$NTPerm = “ReadAndExecute, Write”}
268435456 {$NTPerm = “FullControl (Sub Only)”}
default {$NTPerm = $ACL.AccessMask}
}
$obj = $obj + \"$Domain\$user $NTPerm \"
}
}
Return $obj
if(!($SDirectory)){$obj = \" ERROR: cannot enumerate NTFS permissions. \"}
} # End Get-NTFSPerms Function
function Change_Path ($chemin) {
$path=$chemin
$retour=$path.replace(\"\\",\"\\\")
return $retour
} # End-ConvertingPath for NTFSPermissions
$test=$args
[array]$i= get-content $test
Foreach ($server in $i) {
$Share= Get-AllShares
[array]$MainShares = $MainsShares + $share
[array]$TEST = $TEST + $MainShares
}
#$TEST| select-object __SERVER, name,path,description | ft
Foreach($MainShare in $TEST){
$MainShareName = $MainShare.Name
$MainServer = $MainShare.__SERVER
$MainDescription = $MainShare.Description
$MainLocation = $MainShare.Path
$Pathtochange = Change_Path $MainLocation
$MainNTFSPermissions = Get-NTFSPerms $MainServer $PathToChange
$NTFSPerm= $MainNTFSPermissions[1..($MainNTFSPermissions.length-1)]
$MainSharePermissions = Get-SharePermissions -machine $MainServer -ShareName $MainShareName
$SharePerm = $MainSharePermissions[1..($MainSharePermissions.length-1)]
$resultTemp = New-Object PSObject
$resultTemp | Add-Member NoteProperty -name Machine -value $MainServer
$resultTemp | Add-Member NoteProperty -name Partage -value $MainShareName
$resultTemp | Add-Member NoteProperty -name Chemin -value $MainLocation
$resultTemp | Add-Member NoteProperty -name Description -value $MainDescription
$resultTemp | Add-Member NoteProperty -name Droits_Partage -value \"$SharePerm\"
$resultTemp | Add-Member NoteProperty -name Droits_NTFS -value \"$NTFSPerm\"
[PSObject[]]$export += [PSObject]$resultTemp
$export | select Machine, Partage, Chemin, Description, Droits_Partage, Droits_NTFS | Export-Csv -delimiter \";\" -notypeinformation -path extract.csv
}
D'avance merci pour votre aide.
La pièce jointe code.ps1 est absente ou indisponible
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- Amir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 6 mois #15761
par Amir
Réponse de Amir sur le sujet Re:Ajout de retour chariot dans une cellule CSV
Bon aucun avis sur le sujet.
J'ai trouvé une solution de contournement :
Je fais un export html : ça me permet de rajouter des saut de lignes sur les résultats retournées par les fonctions ( <br>)
une fois l'html généré je fais un clic-droit, exporter vers Excel.
Mais quand même si une personne connaît une astuce pour inserer des sauts de ligne dans un CSV je suis preneur
J'ai trouvé une solution de contournement :
Je fais un export html : ça me permet de rajouter des saut de lignes sur les résultats retournées par les fonctions ( <br>)
une fois l'html généré je fais un clic-droit, exporter vers Excel.
Mais quand même si une personne connaît une astuce pour inserer des sauts de ligne dans un CSV je suis preneur
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 12 ans 6 mois #15765
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Ajout de retour chariot dans une cellule CSV
Salut,
Bedian écrit:
tools.ietf.org/html/rfc4180
Exemple :
[code:1]
\"Name\",\"Length\",\"test\"
\"1-Resultat.txt\",\"36\",\"truc
suite\"
\"1.txt\",\"100\",
[/code:1]
Je te laisse coder autour et vérifier le contenu da la propriété 'test' du premier objet.
Bedian écrit:
La lecture des spécifications du format peut aider :Mais quand même si une personne connaît une astuce pour inserer des sauts de ligne dans un CSV je suis preneur
tools.ietf.org/html/rfc4180
Exemple :
[code:1]
\"Name\",\"Length\",\"test\"
\"1-Resultat.txt\",\"36\",\"truc
suite\"
\"1.txt\",\"100\",
[/code:1]
Je te laisse coder autour et vérifier le contenu da la propriété 'test' du premier objet.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Amir
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 6 mois #15769
par Amir
Réponse de Amir sur le sujet Re:Ajout de retour chariot dans une cellule CSV
Euh....Je ne comprend pas pour le bout de code que tu as mis.
Pour le site de l'IETEF j'étais allé voir également et j'avais tout essayé dans les retours de mes fonctions
$obj = $obj + \"$Domain\$user | $AceType | $NTPerm '%x0D' '%x0A'\"
J'ai essayé plusieurs variantes bien évidemment....A moins qu'il faille utiliser la classe math pour convertir en hexa ou décimale...
Pour le site de l'IETEF j'étais allé voir également et j'avais tout essayé dans les retours de mes fonctions
$obj = $obj + \"$Domain\$user | $AceType | $NTPerm '%x0D' '%x0A'\"
J'ai essayé plusieurs variantes bien évidemment....A moins qu'il faille utiliser la classe math pour convertir en hexa ou décimale...
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 12 ans 6 mois #15770
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Ajout de retour chariot dans une cellule CSV
Bonjour,
Une solution évoquée ici .
Notamment le `n (back tick N) qu'il faut utiliser pour le retour a la ligne. A utiliser donc au niveau de la valeur du paramètre concerné, comme l'expliquait Laurent.
@ +
Matthew BETTON
Une solution évoquée ici .
Notamment le `n (back tick N) qu'il faut utiliser pour le retour a la ligne. A utiliser donc au niveau de la valeur du paramètre concerné, comme l'expliquait Laurent.
Je te laisse coder autour et vérifier le contenu da la propriété 'test' du premier objet.
@ +
Matthew BETTON
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 12 ans 6 mois #15775
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Ajout de retour chariot dans une cellule CSV
Bedian écrit:
C'est des données, le code :
[code:1]
$File=\"c:\temp\Test.csv\"
@'
\"Name\",\"Length\",\"test\"
\"1-Resultat.txt\",\"36\",\"truc
suite\"
\"1.txt\",\"100\",
'@ > $File
$O=Import-csv $File
$O[0].Test.GetType()
$O[0].Test
[/code:1]
Euh....Je ne comprend pas pour le bout de code que tu as mis.
C'est des données, le code :
[code:1]
$File=\"c:\temp\Test.csv\"
@'
\"Name\",\"Length\",\"test\"
\"1-Resultat.txt\",\"36\",\"truc
suite\"
\"1.txt\",\"100\",
'@ > $File
$O=Import-csv $File
$O[0].Test.GetType()
$O[0].Test
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.059 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Ajout de retour chariot dans une cellule CSV