Question Récupération fichier avec condition via gci

Plus d'informations
il y a 13 ans 6 mois #12719 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]

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

Plus d'informations
il y a 13 ans 6 mois #12720 par SiSMik
Salut,

J'ai pas encore ma boule de crystale opérationnelle :)
Du coup tu pourrais nous coller le/mes message(s) d'erreur ?

Merci :silly:

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

Plus d'informations
il y a 13 ans 6 mois #12723 par Julien
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 \&quot;else\&quot; qui fonctionne \&quot;mal\&quot; comme indiqué juste au dessus.<br><br>Message édité par: NoCn, à: 21/09/12 11:43
Pièces jointes :

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

Plus d'informations
il y a 13 ans 6 mois #12724 par Julien
Fichier attaché :
<br><br>Message édité par: NoCn, à: 21/09/12 11:18

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

Plus d'informations
il y a 13 ans 6 mois #12725 par Julien
A effacer<br><br>Message édité par: NoCn, à: 21/09/12 11:18

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

Plus d'informations
il y a 13 ans 6 mois #12742 par Laurent Dardenne
Salut,
j'ai un peu de mal à comprendre ce que contient ton fichier, des noms de serveur ou des noms de chemin ?
NoCn écrit:

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.

Tu ne connais plus le nom du serveur ici :
[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 \&quot;ok\&quot;}
#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
Propulsé par Kunena