Question
Récupération fichier avec condition via gci
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #12719
par Julien
Récupération fichier avec condition via gci a été créé par Julien
Bonjour à tous,
Alors voilà je suis en train de faire un petit script me permettant de récupérer les informations lié a des fichiers se trouvant dans un chemin spécifique.
En gros, j'effectue des sauvegardes sur quelques serveurs le soir et le matin je lance un script qui viens checker l'état de celles ci en passant par la commande get-childitem et via l'objet excel.
Les conditions sont :
- si dans le chemin indiqué il y a des fichiers avec pour extension *.v2i et inférieur à la date d'hier
- si dans le chemin indiqué il y a des fichiers avec pour extension *.v2i
- si il n'y a rien il m'indique juste le nom du serveur
et c'est sur cette dernière condition que je bloque car il me liste tout les fichiers présent dans le chemin alors que je veux juste qu'il m'indique le nom du serveur qui ne contient pas de fichier avec extension *.v2i.
Donc la où je bloque c'est dans le code de la condition \"esle\", en code normale cela fonctionne très bien, mais je n'arrive pas à le retranscrire avec l'objet excel.
Merci d'avance pour votre aide.
Premier code :
[code:1]$compareDate = (Get-Date).AddDays(-1)
get-content \"c:\new\en cours\liste_des_serveurs.txt\" |
foreach {
if(Get-ChildItem $_ -include *.v2i | where-object {$_.lastaccesstime -le $compareDate})
{
Write-Host \"Antérieure $_\"
}
elseif(Get-ChildItem $_ -include *.v2i)
{
Write-Host \"Sauvegarde OK $_\"
}
else
{
Write-Host \"RIEN $_\"
}
}
[/code:1]
Deuxième code :
[code:1]# Appel de l'objet + visu
$Excel = New-Object -Com Excel.Application
$Excel.visible = $True
$Excel = $Excel.Workbooks.Add()
# Création des colonnes/mise en page
$Sheet = $Excel.WorkSheets.Item(1)
$Sheet.Cells.Item(1,1) = “Serveur”
$Sheet.Cells.Item(1,2) = “V2i”
$Sheet.Cells.Item(1,2).HorizontalAlignment = -4108
$Sheet.Cells.Item(1,3) = “Date de sauvegarde”
$Sheet.Cells.Item(1,4) = “Statut”
$Sheet.Cells.Item(1,5) = “Messages”
$Sheet.Cells.Item(1,6) = “Commentaires”
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$WorkBook = $Sheet.UsedRange
$WorkBook.Interior.ColorIndex = 15
$WorkBook.Font.ColorIndex = 1
$WorkBook.Font.Bold = $True
# Variable date pour comparaison
$comparedate = (Get-Date).AddDays(-1)
# Chemin des serveurs
$tt = Get-Content \"c:\new\en cours\Liste_des_serveurs.xls\"
$intRow = 2
# Boucle de recherche + incrémentation dans excel
$colItems = Get-ChildItem $tt
foreach ($objItem in $colItems) {
if(($objItem.name.contains(\".v2i\"«»)) -and $objItem.lastaccesstime -le $compareDate)
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 6
$sheet.Cells.Item($introw,5).interior.ColorIndex = 6
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"OK/KO\"
$Sheet.Cells.Item($intRow,5) = \"Sauvegarde antérieure\"
}
elseif($objItem.name.contains(\".v2i\"«») -eq $true)
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 42
$sheet.Cells.Item($introw,5).interior.ColorIndex = 42
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"OK\"
$Sheet.Cells.Item($intRow,5) = \"Sauvegarde valide\"
}
else # Ici que ça bloque
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 3
$sheet.Cells.Item($introw,5).interior.ColorIndex = 3
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"KO\"
$Sheet.Cells.Item($intRow,5) = \"Aucune sauvegarde ou serveur indisponible\"
}
$intRow = $intRow + 1
}
# Autosize des colonnes
$WorkBook.EntireColumn.AutoFit()
[/code:1]
Alors voilà je suis en train de faire un petit script me permettant de récupérer les informations lié a des fichiers se trouvant dans un chemin spécifique.
En gros, j'effectue des sauvegardes sur quelques serveurs le soir et le matin je lance un script qui viens checker l'état de celles ci en passant par la commande get-childitem et via l'objet excel.
Les conditions sont :
- si dans le chemin indiqué il y a des fichiers avec pour extension *.v2i et inférieur à la date d'hier
- si dans le chemin indiqué il y a des fichiers avec pour extension *.v2i
- si il n'y a rien il m'indique juste le nom du serveur
et c'est sur cette dernière condition que je bloque car il me liste tout les fichiers présent dans le chemin alors que je veux juste qu'il m'indique le nom du serveur qui ne contient pas de fichier avec extension *.v2i.
Donc la où je bloque c'est dans le code de la condition \"esle\", en code normale cela fonctionne très bien, mais je n'arrive pas à le retranscrire avec l'objet excel.
Merci d'avance pour votre aide.
Premier code :
[code:1]$compareDate = (Get-Date).AddDays(-1)
get-content \"c:\new\en cours\liste_des_serveurs.txt\" |
foreach {
if(Get-ChildItem $_ -include *.v2i | where-object {$_.lastaccesstime -le $compareDate})
{
Write-Host \"Antérieure $_\"
}
elseif(Get-ChildItem $_ -include *.v2i)
{
Write-Host \"Sauvegarde OK $_\"
}
else
{
Write-Host \"RIEN $_\"
}
}
[/code:1]
Deuxième code :
[code:1]# Appel de l'objet + visu
$Excel = New-Object -Com Excel.Application
$Excel.visible = $True
$Excel = $Excel.Workbooks.Add()
# Création des colonnes/mise en page
$Sheet = $Excel.WorkSheets.Item(1)
$Sheet.Cells.Item(1,1) = “Serveur”
$Sheet.Cells.Item(1,2) = “V2i”
$Sheet.Cells.Item(1,2).HorizontalAlignment = -4108
$Sheet.Cells.Item(1,3) = “Date de sauvegarde”
$Sheet.Cells.Item(1,4) = “Statut”
$Sheet.Cells.Item(1,5) = “Messages”
$Sheet.Cells.Item(1,6) = “Commentaires”
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$WorkBook = $Sheet.UsedRange
$WorkBook.Interior.ColorIndex = 15
$WorkBook.Font.ColorIndex = 1
$WorkBook.Font.Bold = $True
# Variable date pour comparaison
$comparedate = (Get-Date).AddDays(-1)
# Chemin des serveurs
$tt = Get-Content \"c:\new\en cours\Liste_des_serveurs.xls\"
$intRow = 2
# Boucle de recherche + incrémentation dans excel
$colItems = Get-ChildItem $tt
foreach ($objItem in $colItems) {
if(($objItem.name.contains(\".v2i\"«»)) -and $objItem.lastaccesstime -le $compareDate)
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 6
$sheet.Cells.Item($introw,5).interior.ColorIndex = 6
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"OK/KO\"
$Sheet.Cells.Item($intRow,5) = \"Sauvegarde antérieure\"
}
elseif($objItem.name.contains(\".v2i\"«») -eq $true)
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 42
$sheet.Cells.Item($introw,5).interior.ColorIndex = 42
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"OK\"
$Sheet.Cells.Item($intRow,5) = \"Sauvegarde valide\"
}
else # Ici que ça bloque
{
$Sheet.Cells.Item($intRow,1) = $objItem.name.substring(0,8).ToLower()
$Sheet.Cells.Item($intRow,2) = $objItem.name
$Sheet.Cells.Item($intRow,3) = $objItem.lastaccesstime
$Sheet.UsedRange.Borders.LineStyle = 1
$Sheet.UsedRange.Borders.Weight = 2
$sheet.Cells.Item($introw,1).interior.ColorIndex = 42
$sheet.Cells.Item($introw,2).interior.ColorIndex = 42
$sheet.Cells.Item($introw,3).interior.ColorIndex = 42
$sheet.Cells.Item($introw,4).interior.ColorIndex = 3
$sheet.Cells.Item($introw,5).interior.ColorIndex = 3
$sheet.Cells.item($introw,4).HorizontalAlignment = -4108
$sheet.Cells.item($introw,3).HorizontalAlignment = -4108
$Sheet.Cells.Item($intRow,4) = \"KO\"
$Sheet.Cells.Item($intRow,5) = \"Aucune sauvegarde ou serveur indisponible\"
}
$intRow = $intRow + 1
}
# Autosize des colonnes
$WorkBook.EntireColumn.AutoFit()
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- SiSMik
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 492
- Remerciements reçus 0
il y a 13 ans 6 mois #12720
par SiSMik
Réponse de SiSMik sur le sujet Re:Récupération fichier avec condition via gci
Salut,
J'ai pas encore ma boule de crystale opérationnelle
Du coup tu pourrais nous coller le/mes message(s) d'erreur ?
Merci
J'ai pas encore ma boule de crystale opérationnelle
Du coup tu pourrais nous coller le/mes message(s) d'erreur ?
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #12723
par Julien
Réponse de Julien sur le sujet Re:Récupération fichier avec condition via gci
Je n'ai aucun message d'erreur.
C'est juste comme je l'ai expliqué, il me sors tout ce que contient le répertoire (ce qui est normal en fonction de ma commande get-childitem) alors que je veux seulement qu'il m'indique que le serveur qui ne contient pas de sauvegarde au lieu de lister le contenu, ex de sortie :
Donc en vert/vert c'est la condition \"elseif\" qui fonctionne très bien
En vert/jaune c'est la condition \"if\" qui fonctionne aussi très bien
Et vert/rouge c'est la condition \"else\" qui fonctionne \"mal\" comme indiqué juste au dessus.<br><br>Message édité par: NoCn, à: 21/09/12 11:43
C'est juste comme je l'ai expliqué, il me sors tout ce que contient le répertoire (ce qui est normal en fonction de ma commande get-childitem) alors que je veux seulement qu'il m'indique que le serveur qui ne contient pas de sauvegarde au lieu de lister le contenu, ex de sortie :
Donc en vert/vert c'est la condition \"elseif\" qui fonctionne très bien
En vert/jaune c'est la condition \"if\" qui fonctionne aussi très bien
Et vert/rouge c'est la condition \"else\" qui fonctionne \"mal\" comme indiqué juste au dessus.<br><br>Message édité par: NoCn, à: 21/09/12 11:43
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #12724
par Julien
Réponse de Julien sur le sujet Re:Récupération fichier avec condition via gci
Connexion ou Créer un compte pour participer à la conversation.
- Julien
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 17
- Remerciements reçus 0
il y a 13 ans 6 mois #12725
par Julien
Réponse de Julien sur le sujet Re:Récupération fichier avec condition via gci
A effacer<br><br>Message édité par: NoCn, à: 21/09/12 11:18
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 13 ans 6 mois #12742
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Récupération fichier avec condition via gci
Salut,
j'ai un peu de mal à comprendre ce que contient ton fichier, des noms de serveur ou des noms de chemin ?
NoCn écrit:
[code:1]$colItems = Get-ChildItem $tt
foreach ($objItem in $colItems) {[/code:1]
Et si $Colitems est $null il y a tout de même une itération :
[code:1]foreach ($objItem in $null) {write-host \"ok\"}
#ok[/code:1]
j'ai un peu de mal à comprendre ce que contient ton fichier, des noms de serveur ou des noms de chemin ?
NoCn écrit:
Tu ne connais plus le nom du serveur ici :et c'est sur cette dernière condition que je bloque car il me liste tout les fichiers présent dans le chemin alors que je veux juste qu'il m'indique le nom du serveur qui ne contient pas de fichier avec extension *.v2i.
[code:1]$colItems = Get-ChildItem $tt
foreach ($objItem in $colItems) {[/code:1]
Et si $Colitems est $null il y a tout de même une itération :
[code:1]foreach ($objItem in $null) {write-host \"ok\"}
#ok[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.045 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Récupération fichier avec condition via gci