Question Comparaison de 2 colonnes dans 2 fichiers csv

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 9 ans 3 mois #23164 par PatriceLT
Réponse de PatriceLT sur le sujet Re:Comparaison de 2 colonnes dans 2 fichiers csv
Je viens de le tester en prod, et ça ne fonctionne pas, d'après le script :

- Le ((GPInheritance....).GPOLinks).DisplayName (le displayname ne fonctionne pas, sauf que lorsque je l'enlève, il me met bien les gpos, et je peux voir que vis à vis des paramètres qu'il me propose, il y a bien le displayname.

- Le second problème est lors de mon \"Get-GPO $_\" ou la il me met une erreur, car pour lui il faut identifier les gpo par leur GUID... ça va me rendre chèvre ...

- 3ième chose, je suis obligé de passer par AD Quest pour me connecter aux différents dc, via la commande Connect-QADComputer <fqdn> afin de pouvoir faire le gpinheritance...

Rahhh je vais pas m'en sortir xD

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

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 9 ans 3 mois #23165 par PatriceLT
Réponse de PatriceLT sur le sujet Re:Comparaison de 2 colonnes dans 2 fichiers csv
Après plusieurs recherche et l'aide d'un collègue, il est enfin terminé. Voici le script au complet, sans les domaines bien sûr à renseigner à la main.

[code:1]#
#
# PARAMETRE #
#
#
[cmdletbinding()]
Param(
[switch]$reference
)

#
#
# ENLEVER LA RESTRICTION D'EXECUTION DU SCRIPT #
#
#
#Set-ExecutionPolicy 'Unrestricted'

#
#
# ENLEVER LE # POUR AUTOMATIQUEMENT METTRE LA PARAMETRE -REFERENCE #
#
#
#[switch]$reference = [switch]::«»Present

#
#
# IMPORT DES MODULES #
#
#
Import-Module ActiveDirectory
Import-Module GroupPolicy

#
#
# VARIABLE DATE #
#
#
$DATE = Get-Date -Format \"yyyy-MM-dd\"
$OU = \"OU=Computers,OU=###,DC=###,DC=###\"
$DOMAINE = \"##########\"

#
#
# CHEMIN DU FICHIER DE REFERENCE CONTENANT LE FICHIER REFERENCE #
#
#

$fichierref = \"C:\Users\########\Desktop\RAPPORT\<DOMAINE>\Fichier_Référence.txt\"

#
#
# SI ERREUR IL Y A ALORS 'CONTINUE' #
#
#
$ErrorActionPreference = 'Stop'

#
#
# TEST SI LE PARAMETRE REFERENCE EST PRESENT SINON C'EST UN FICHIER QUOTIDIEN #
#
#
if ($reference.IsPresent)
{
Write-Host \"creation d'un fichier reference\" -ForegroundColor Magenta
$fichierref = (Split-Path $fichierref -Parent) + \"\\" + $DOMAINE + \"_\" + (Split-Path $fichierref -Leaf)
#$fichierref = \"nom du fichier de sauvegarde du referenciel en CSV\"
}
else
{
$fichierref = (Split-Path $fichierref -Parent) + \"\\" + $DOMAINE + \"_\" + (Split-Path $fichierref -Leaf)
#$fichierref = \"nom du fichier de sauvegarde des GPOs actuel en CSV\"
}

#
#
# VARIABLE DU NOM DES FICHIERS DE SORTIE DU RAPPORT AVEC LA DATE #
#
#
$Sauvegarder_Reference = \"C:\Users\########\Desktop\RAPPORT\<DOMAINE>\REFERENCE\RapportGPO_Reference_$DATE.csv\"
$Sauvegarder = \"C:\Users\########\Desktop\RAPPORT\<DOMAINE>\QUOTIDIEN\RapportGPO_$DATE.csv\"
$Sauvegarder_Diff = \"C:\Users\########\Desktop\RAPPORT\<DOMAINE>\DIFFERENCE\RapportGPO_$DATE.csv\"

#
#
# TEST SI LE PARAMETRE REFERENCE EST PRESENT #
#
#
if ($reference.IsPresent)
{

# Si aucun nom de fichier n'est renseigné alors on annule #
if ($Sauvegarder_Reference -eq $null)
{
Write-host \"Opération Annulée\" -ForegroundColor Red
write-host \"Pas de nom de fichier\" -ForegroundColor Red

exit
}
else # Sinon on écrit le chemin du fichier référence en jaune
{
$Sauvegarder_Reference = (Split-Path $Sauvegarder_Reference -Parent) + \"\\" + $DOMAINE + \"_\" + (Split-Path $Sauvegarder_Reference -Leaf)
write-host \"nom et chemin du fichier Référence : $Sauvegarder_Reference\" -ForegroundColor 'Yellow' -backgroundColor Black
}
}
else # Sinon
{
# Si le nom du fichier quotidien est vide
if ($Sauvegarder -eq $null)
{
Write-host \"Opération Annulée\" -ForegroundColor Red
write-host \"Pas de nom de fichier\" -ForegroundColor Red

exit # on exit
}
else # Sinon on écrit le chemin du fichier quotidien en jaune
{
$Sauvegarder = (Split-Path $Sauvegarder -Parent) + \"\\" + $DOMAINE + \"_\" + (Split-Path $Sauvegarder -Leaf)
write-host \"nom et chemin du fichier Quotidien : $Sauvegarder\" -ForegroundColor 'Yellow' -backgroundColor Black
}
}



#
#
# RECUPERATION DE TOUTES LES GPOs AVEC PLUSIEURS COLONNES (NOM, GUID ...) #
#
#
# CIBLER L'OU ET RECUPERER LES GPOS QUI LUI SONT LIEES #
$selectgpo = @(((Get-GPInheritance -target $OU).GPOLinks) | foreach {$_.DisplayName})

# RECUPERATION DES GPOS LIEES A L'OU AVEC TOUT SES PARAMETRES #
$GPO = $selectgpo | foreach { Get-GPO -Domain $DOMAINE $_ | select DomainName, DisplayName, @{ Label = \"UserVersion\"; Expression = { $_.user.dsversion } }, @{ Label = \"ComputerVersion\"; Expression = { $_.computer.dsversion } }, CreationTime, ModificationTime, id | sort DisplayName }


## TEST SI LE PARAMETRE REFERENCE EST ENTRE ##
if ($reference.IsPresent)
{
# Export en csv avec le nom du fichier Reference
$GPO | Export-Csv $Sauvegarder_Reference -Delimiter \";\" -NoTypeInformation
}
else
{
# Export en csv avec le nom du fichier Quotidien
$GPO | Export-Csv $Sauvegarder -Delimiter \";\" -NoTypeInformation
}
if ($reference.IsPresent) {

# Stockage du nouveau nom du fichier de Référence
$Sauvegarder_Reference | Set-Content $fichierref
}
else {
# chargement du fichier de reference des GPOs grace à l'import csv
$gpo1 = Import-Csv $(get-Content $fichierref ) -Delimiter \";\"
# chargement du fichier des GPOs Quotidienne
$gpo2 = Import-Csv $Sauvegarder -Delimiter \";\"

# comparaison des deux versions de GPO
$diff = Compare-Object -ReferenceObject $gpo1 -DifferenceObject $gpo2 -Property UserVersion, ComputerVersion -PassThru |
# filtrage pour ne garder que la nouvelle version
where {$_.SideIndicator -eq \"=>\"} |
# suppression de l'attribut SideIndicator
select * -ExcludeProperty SideIndicator

# enregistrement si il y a des différences dans un fichier [nomdufichier]_Différence.csv
if ($diff)
{
$diff | export-csv $($Sauvegarder_Diff.Insert($Sauvegarder_Diff.LastIndexOf(\".\"«»), \"_Différence\"«»)) -Delimiter \",\" -NoTypeInformation
Write-Host \"Nom du fichier avec différence de version entre GPO : $($Sauvegarder_Diff.Insert($Sauvegarder_Diff.LastIndexOf(\".\"«»), \"_Différence\"«»))\" -Foreground red
}
else
{
Write-Host \"Il n'y a pas de modification de GPO par raport au référentielle\" -ForegroundColor green
}
}[/code:1]

Merci beaucoup pour votre aide en tout cas.

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

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