Résolu
Rapport Compare-Object et Measure-Object
- Soum Tony
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 5 mois - il y a 3 ans 5 mois #32730
par Soum Tony
Rapport Compare-Object et Measure-Object a été créé par Soum Tony
Bonjour à tous,
J'ai besoin d'un peu d'aide svp.
J'ai un fichier CSV avec des comptes utilisateurs supprimés en SamAccountName. Nous avons des dossiers de ces utilisateurs et je souhaite faire du ménage dans nos serveurs de fichiers, leurs dossiers respectifs a pour nom leur SamAccountName. Mais avant cela, j'ai besoin d'avoir des statistiques, je génère le fichier, avec le nom du chemin et sa taille en Mo. Par contre, quand cela génère le fichier csv, je n'ai pas la bonne mise en forme où la taille serait à coté du répertoire en question. Il est écrit à la ligne en dessous.
Voici le script :
Le CSV d'import user a un format :
Actuellement j'ai:
Le CSV généré souhaité serait plutôt:
\\serveur1\Private\Pierre;0
\\serveur1\Private\Paul;228,28
\\serveur1\Private\Jacques;0
\\serveur2\Pst\Pierre;0,26
\\serveur3\My_Archives_Place\Pierre;xxx.xx
etc...
Peut-être il y a plus simple, mais je n'ai pas encore trouvé.
Merci pour votre aide =)
J'ai besoin d'un peu d'aide svp.
J'ai un fichier CSV avec des comptes utilisateurs supprimés en SamAccountName. Nous avons des dossiers de ces utilisateurs et je souhaite faire du ménage dans nos serveurs de fichiers, leurs dossiers respectifs a pour nom leur SamAccountName. Mais avant cela, j'ai besoin d'avoir des statistiques, je génère le fichier, avec le nom du chemin et sa taille en Mo. Par contre, quand cela génère le fichier csv, je n'ai pas la bonne mise en forme où la taille serait à coté du répertoire en question. Il est écrit à la ligne en dessous.
Voici le script :
# Variables serveurs de fichiers
$Folder_PST = Get-ChildItem '\\Serveur1\pst' -Directory | % {$_.Name}
$Folder_Private = Get-ChildItem '\\Serveur2\Private' -Directory | % {$_.Name}
$Folder_Archives = Get-ChildItem '\\Serveur3\My_Archives_Place' -Directory | % {$_.Name}
# Import CSV
$CSV_users = Import-Csv -Path 'D:\Folders_for_delete.csv' | % {$_.'SamAccountName'}
# Comparer les utilisateurs supprimées et les répertoires des serveurs de fichiers
$Compare_Private = Compare-Object $Folder_Private $CSV_users -IncludeEqual -ExcludeDifferent
$Compare_PST = Compare-Object $Folder_PST $CSV_users -IncludeEqual -ExcludeDifferent
$Compare_Archives = Compare-Object $Folder_Archives $CSV_users -IncludeEqual -ExcludeDifferent
foreach($SAM in $Compare_Private){
if($SAM.SideIndicator -eq "=="){
Write-Output "\\Serveur1\Private\$($SAM.InputObject)" | Out-File -FilePath D:\Report_Folders_for_delete.csv -Append
[math]::Round((Get-ChildItem "\\Serveur1\Private\SAM.InputObject)" -Recurse | Measure-Object -Property Length -Sum).Sum / 1Mb,2) | Add-Content -Path D:\Report_Folders_for_delete.csv
}
}
foreach($SAM in $Compare_PST){
if($SAM.SideIndicator -eq "=="){
Write-Output "\\Serveur2\pst\$($SAM.InputObject)" | Out-File -FilePath D:\Report_Folders_for_delete.csv -Append
[math]::Round((Get-ChildItem "\\Serveur2\pst\$($SAM.InputObject)" -Recurse | Measure-Object -Property Length -Sum).Sum / 1Mb,2) | Add-Content -Path D:\Report_Folders_for_delete.csv
}
}
foreach($SAM in $Compare_Archives){
if($SAM.SideIndicator -eq "=="){
Write-Output "\\Serveur3\My_Archives_Place\$($SAM.InputObject)" | Out-File -FilePath D:\Report_Folders_for_delete.csv -Append
[math]::Round((Get-ChildItem "\\Serveur3\My_Archives_Place\$($SAM.InputObject)" -Recurse | Measure-Object -Property Length -Sum).Sum / 1Mb,2) | Add-Content -Path D:\Report_Folders_for_delete.csv
}
}Le CSV d'import user a un format :
Actuellement j'ai:
Le CSV généré souhaité serait plutôt:
\\serveur1\Private\Pierre;0
\\serveur1\Private\Paul;228,28
\\serveur1\Private\Jacques;0
\\serveur2\Pst\Pierre;0,26
\\serveur3\My_Archives_Place\Pierre;xxx.xx
etc...
Peut-être il y a plus simple, mais je n'ai pas encore trouvé.
Merci pour votre aide =)
Pièces jointes :
Dernière édition: il y a 3 ans 5 mois par Soum Tony.
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 3 ans 5 mois #32731
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Rapport Compare-Object et Measure-Object
Salut,
>> Par contre, quand cela génère le fichier csv
d'après le résultat attendu tu devrais créer un objet , que tu insères dans une collection Et en fin de traitement. tu exportes cette collection en csv (export-csv).
Une fonction traitant chaque liste de répertoire peut réduire la taille du code.
>>Peut-être il y a plus simple,
Je dirais 'plus objet ' (que ligne de texte)
>> Par contre, quand cela génère le fichier csv
d'après le résultat attendu tu devrais créer un objet , que tu insères dans une collection Et en fin de traitement. tu exportes cette collection en csv (export-csv).
Une fonction traitant chaque liste de répertoire peut réduire la taille du code.
>>Peut-être il y a plus simple,
Je dirais 'plus objet ' (que ligne de texte)
Tutoriels PowerShell
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 3 ans 5 mois #32732
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Rapport Compare-Object et Measure-Object
qq chose dans ce genre là :
# Variables serveurs de fichiers
$Folder_PST = 1..5
$Folder_Private = 3..8
$Folder_Archives = 10..15
# Import CSV
$script:CSV_users = 5..10
$Liste=[system.collections.arraylist]::new()
Function Select-EqualObject{
param($Folder,$Path)
# Comparer les utilisateurs supprimés et les répertoires des serveurs de fichiers
$Compare = Compare-Object $Folder $script:CSV_users -IncludeEqual -ExcludeDifferent
foreach($Current in $Compare){
if($Current.SideIndicator -eq "==")
{
$sam=$Current.InputObject
$Result=[pscustomObject]@{Sam="$path\$Sam";Stat=$null}
$Result.Stat=10 #[math]::Round((Get-ChildItem "$path\$($SAM)" -Recurse | Measure-Object -Property Length -Sum).Sum / 1Mb,2)
$script:Liste.Add($Result) > $null
}
}
}
Select-EqualObject $Folder_PST '\\Serveur1\Private\'
Select-EqualObject $Folder_Private '\\Serveur2\pst\'
Select-EqualObject $Folder_Archives '\\Serveur3\My_Archives_Place\'
$script:Liste
$script:Liste|export-csv c:\temp\Report_Folders_for_delete.csv -delimiter ';' -NoTypeInformationTutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Soum Tony
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 5 mois #32733
par Soum Tony
Réponse de Soum Tony sur le sujet Rapport Compare-Object et Measure-Object
Bonjour Laurent,
Merci pour la réponse, j'avais eu du mal à comprendre puis en lisant le script c'est tout bon.
Merci pour l'aide, ça m'a énormément aidé !!
Merci pour la réponse, j'avais eu du mal à comprendre puis en lisant le script c'est tout bon.
Merci pour l'aide, ça m'a énormément aidé !!
Connexion ou Créer un compte pour participer à la conversation.
- Soum Tony
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 8
- Remerciements reçus 0
il y a 3 ans 5 mois #32734
par Soum Tony
Réponse de Soum Tony sur le sujet Rapport Compare-Object et Measure-Object
Merci, j'avais pas compris pourquoi j'avais que des 10 dans Start, j'ai vu le commentaire dans la variable et c'était bon.
Merci encore !
Merci encore !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.120 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Rapport Compare-Object et Measure-Object