Question Modification mise en forme fichier texte

Plus d'informations
il y a 9 ans 11 mois #21697 par Gizmo59
Bonjour à tous,

Une commande powershell me renvoie un fichier texte avec les lignes suivantes :

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



Je voudrais réaliser un srcipt poweshell pour modifier la mise en forme de mon fichier texte. Il devrait :

1 - Afficher le nom de l'attribute name (ca ok)
2 - Mettre un \" - \" à la suite

C'est là que ca se complique enormement pour moi pauvre debutant :

3 - Lire la valeur de \"current value\" et regarder si elle existe dans \"possibleValues\"

4- Si elle existe, rajouter à la suite de la ligne rajouter à la ligne la \"possibleValueDescription\" correspondant à la current value

5 - Si elle n'existe pas, afficher la \"currentValue\" à la fin de la ligne

J'espère que c'est clair .....

Merci beaucoup pour le coup de main.

PS : J'ai essayé avec les fonctions try / catch mais je n'y arrive pas :(

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

Plus d'informations
il y a 9 ans 11 mois #21700 par Philippe
bonjour Gizmo59

Une commande powershell me renvoie un fichier texte avec les lignes suivantes :

si tu execute une cmd powershell, il vaut mieux que tu travail avec l'objet cree car avec le fichier texte ça sera tres difficile d'avoir ceci :

[code:1]AttributeName CurrentDescription

AC Power Recovery Mode Last
Admin Setup Lockout 3
Boot Mode BIOS
Chassis Intrusion Disable
Embedded SATA Controller AHCI [/code:1]
c'est un essai avec un objet recréé à la main à partir de ton fichier

[code:1]
# creation d'un objet avec les données du bios
$bios = @()
$Attributebios = new-object Psobject
$Attributebios | Add-member -Name \"AttributeName\" -Membertype \"Noteproperty\" -Value \"AC Power Recovery Mode\"
$Attributebios | Add-member -Name \"CurrentValue\" -Membertype \"Noteproperty\" -Value @(2)
$Attributebios | Add-member -Name \"PossibleValues\" -Membertype \"Noteproperty\" -Value @(1;2;3)
$Attributebios | Add-member -Name \"PossibleValuesDescription\" -Membertype \"Noteproperty\" @(\"Off\"; \"Last\"; \"On\"«»)
$bios += $Attributebios

$Attributebios = new-object Psobject
$Attributebios | Add-member -Name \"AttributeName\" -Membertype \"Noteproperty\" -Value \"Admin Setup Lockout\"
$Attributebios | Add-member -Name \"CurrentValue\" -Membertype \"Noteproperty\" -Value @(3)
$Attributebios | Add-member -Name \"PossibleValues\" -Membertype \"Noteproperty\" -Value @(1;2)
$Attributebios | Add-member -Name \"PossibleValuesDescription\" -Membertype \"Noteproperty\" @(\"Disable\"; \"Enable\"«»)
$bios += $Attributebios

$Attributebios = new-object Psobject
$Attributebios | Add-member -Name \"AttributeName\" -Membertype \"Noteproperty\" -Value \"Boot Mode\"
$Attributebios | Add-member -Name \"CurrentValue\" -Membertype \"Noteproperty\" -Value @(1)
$Attributebios | Add-member -Name \"PossibleValues\" -Membertype \"Noteproperty\" -Value @(1;2)
$Attributebios | Add-member -Name \"PossibleValuesDescription\" -Membertype \"Noteproperty\" @(\"BIOS\"; \"UEFI\"«»)
$bios += $Attributebios

$Attributebios = new-object Psobject
$Attributebios | Add-member -Name \"AttributeName\" -Membertype \"Noteproperty\" -Value \"Chassis Intrusion\"
$Attributebios | Add-member -Name \"CurrentValue\" -Membertype \"Noteproperty\" -Value @(1)
$Attributebios | Add-member -Name \"PossibleValues\" -Membertype \"Noteproperty\" -Value @(1;2;3)
$Attributebios | Add-member -Name \"PossibleValuesDescription\" -Membertype \"Noteproperty\" @(\"Disable\"; \"Enable\"; \"Silent\"«»)
$bios += $Attributebios

$Attributebios = new-object Psobject
$Attributebios | Add-member -Name \"AttributeName\" -Membertype \"Noteproperty\" -Value \"Embedded SATA Controller\"
$Attributebios | Add-member -Name \"CurrentValue\" -Membertype \"Noteproperty\" -Value @(4)
$Attributebios | Add-member -Name \"PossibleValues\" -Membertype \"Noteproperty\" -Value @(1;3;4;5)
$Attributebios | Add-member -Name \"PossibleValuesDescription\" -Membertype \"Noteproperty\" @(\"Off\"; \"ATA\"; \"AHCI\"; \"RAID\"«»)
$bios += $Attributebios

Remove-Variable Attributebios
$bios

# a partir d'ici le vraie script
# ci dessous la commande que tu fais sans le ft ou formt-table ni le set-content ou equivalent qui ecri dans le fichier
# le resultat de la cmd est renvoyer dans la variable $bios
# $bios = get-wmi......

$bios | foreach {
$Current = $_
$rang = 0
$desc = $null
$_.PossibleValues | foreach {
if ($Current.CurrentValue -eq $_) {
$desc = $Current.PossibleValuesDescription[$rang]
}
$rang += 1
}
$_ | select AttributeName, @{n=\"CurrentDescription\";e={if ($desc) {$desc} else {$current.CurrentValue}}}
}

[/code:1]

avec les infos que j'ai je peut pas plus

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

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