Donc, si je comprends bien, $content2
est le fichier le plus récent, non?
Si tel est le cas, alors $comparedlines
contiendra toutes les valeurs qui ont changé. Si c'est vrai, alors nous sommes en affaires, parce que Doug Finke a écrit un module PowerShell absolument génial appelé importExcel qui va rendre cela trivialement facile. Mais d'abord, comment ai-je fait ça?
J'avais besoin de fichiers à tester, et je n'avais pas votre fichier source, donc je ne pouvais pas deviner les valeurs. Je viens de faire un simple fichier CSV avec une valeur Nom et Position, et j'ai changé les numéros de Position entre Content1 et Content2.
Comment résoudre ce problème, d'abord, téléchargez Import-Excel en ce moment. Si vous êtes sur la version PowerShell 4.0 ou supérieur, vous pouvez l'installer à partir de PowerShell comme ceci:
Find-Module ImportExcel | Install-Module
Ce module a le concept de règles de filtrage ConditionalText. Vous pouvez en créer un nouveau comme ça.
1..5 | Export-Excel C:\temp\test.xslx -Show`
-ConditionalText (New-ConditionalText -ConditionType GreaterThan 3)
Cette sortie de volonté et d'afficher une nouvelle feuille de calcul avec les numéros 1 à 5 dans, et mettre en évidence les plus élevés que 3.
Nous pouvons aussi lignes de surbrillance ContainsText qui correspond à une valeur que nous connaître. Donc, nous prenons la valeur de $ comparisonLines en utilisant ForEach-Object, et créons une règle New-ConditionalText pour mettre en évidence la ligne si elle contient l'une des propriétés.
$highlight =$comparedLines | % {New-ConditionalText -ConditionalType ContainsText $_.Name}
Ensuite, nous allons faire écho le contenu de content2 $, et utiliser Export-Excel pour créer un nouveau fichier .xslx et appliquer une règle de mise en forme conditionnelle à elle.
$content2 | Export-Excel r:\test.xlsx -show -ConditionalText ($highlight)
Et la sortie
Vous aurez probablement besoin de jouer avec le code un tout petit peu, et de modifier pour l'adapter à ce que vos colonnes sont appelés, mais comment vous pouvez exporter un csv et mettre en évidence les différences en utilisant PowerShell. Sauf qu'il n'y a pas de surlignage ou de format de texte dans un fichier .csv, vous devez donc utiliser une feuille de calcul Excel à la place. Lemme savoir si vous avez besoin de moi pour creuser plus profond partout :)
Nous vous remercions de votre suggestion FoxDeploy. Comme vous l'avez dit, $ content2 est le fichier le plus récent, ce qui signifie que $ content1 est l'ancien fichier.Et les lignes qui ont changé entre-temps sont dans $ compareLines. Maintenant, dans mon scénario je ne sais pas quelles propriétés spécifiques ont changé de l'ancien fichier dans le nouveau fichier, et je voudrais avoir un moyen de comprendre cela dynamiquement. Donc, dans le fichier de sortie, je voudrais avoir la cellule spécifique colorée s'il y avait un changement de l'ancien fichier au nouveau, Quelque chose de similaire à votre fichier résultat mais avec la cellule où le changement est arrivé (qui est dans la propriété Rank) – Moyeto
Pour vous aider, j'ai besoin de copies de vos fichiers d'entrée. En l'état, je pense que cela vous amène dans la bonne direction, et est probablement digne d'être marqué «Réponse», n'est-ce pas? :) – FoxDeploy