Question Résultat d'une commande dans un mail

Plus d'informations
il y a 11 ans 3 mois #19125 par Toper
Bonjour,
j'ai ce script qui fonctionne très bien:
[code:1]#########################################################
# #
# Monitoring Disk Space #
# #
#########################################################
param (
$serverList = \"c:\list.txt\" # Local drive where is server list
)

$users = \"@mail\" #List of user will receive report.
$fromemail = \"@mail2\" # From email
$server = \"server\" #SMTP Server.
$computers = Get-Content $serverList


[decimal]$thresholdspace = 15 # % of disk space
$critical=8 # critical value. Show red
[System.Array]$results = foreach ($cmp in $computers) {
Get-WMIObject -ComputerName $cmp Win32_LogicalDisk |
where{($_.DriveType -eq 3) -and (($_.freespace/$_.size*100) -lt $thresholdspace) }|
select @{n='Nom du serveur' ;e={\"{0:n0}\" -f ($cmp)}},
@{n='Nom du volume' ;e={\"{0:n0}\" -f ($_.volumename)}},
@{n='Lettre du lecteur' ;e={\"{0:n0}\" -f ($_.name)}},
@{n='Taille totale (Gb)' ;e={\"{0:n2}\" -f ($_.size/1gb)}},
@{n='Espace libre (Gb)';e={\"{0:n2}\" -f ($_.freespace/1gb)}},
@{n='Pourcentage libre';e={\"{0:n2}%\" -f ($_.freespace/$_.size*100)}}
}


$tableStart=\"<table style='boder:0px 0px 0px 0px;'><tr><th>Nom du serveur</th><th>Nom du volume</th><th>Lettre du lecteur</th>
<th>Taille totale (Gb)</th><th>Espace libre (Gb)</th><th>Pourcentage libre</th></tr>\"

$allLines=\"\"
for($i=0;$i -lt $results.Length;$i++){
#get variables
$servers=($results[$i] | select -ExpandProperty \"Nom du serveur\" )
$volumes=($results[$i] | select -ExpandProperty \"Nom du volume\" )
$drives=($results[$i] | select -ExpandProperty \"Lettre du lecteur\" )
$capac=($results[$i] | select -ExpandProperty \"Taille totale (Gb)\" )
$freeSpace=($results[$i] | select -ExpandProperty \"Espace libre (Gb)\" )
$percentage=($results[$i] | select -ExpandProperty \"Pourcentage libre\" )

#Change Color Lines
if(($i % 2) -eq 0){
$beginning=\"<tr style='background-color:white;'>\"
}else{
$beginning=\"<tr style='background-color:rgb(245,245,245);'>\"
}
#Build body
$bodyEl =\"<td> \" + $servers+ \" </td>\"
$bodyEl+=\"<td> \" + $volumes + \" </td>\"
$bodyEl+=\"<td style='text-align:center;'> \" + $drives + \" </td>\"
$bodyEl+=\"<td style='text-align:center;'> \" + $capac + \" </td>\"
$bodyEl+=\"<td style='text-align:center;'> \" + $freeSpace + \" </td>\"
$fr=[System.Double]::«»Parse($freeSpace)
$cap=[System.Double]::«»Parse($capac)
if((($fr/$cap)*100) -lt [System.Int32]::«»Parse($critical)){
$bodyEl+= \"<td style='color:red;font-weight:bold;text-align:center;'>\"+$percentage +\"</td>\"
}
else{
$bodyEl+=\"<td style='color:green;font-weight;text-align:center;'>\"+$percentage +\"</td>\"
}
$end=\"</tr>\"
$allLines+=$beginning+$bodyEl+$end
}
$tableBody=$allLines
$tableEnd=\"</table>\"
$tableHtml=$tableStart+$tableBody+$tableEnd

# HTML Output Format
$HTMLmessage = @\"
<font color=\"\"black\"\" face=\"\"Arial\"\" size=\"\"3\"\">
<h1 style='font-family:arial;'><b>Rapport d'espace disque libre</b></h1>
<p style='font: .8em \"\"Lucida Grande\"\", Tahoma, Arial, Helvetica, sans-serif;'>Vous recevez cet Email car le(s) volume(s) ci-dessous ont moins de $thresholdspace % d'espace libre. Les volumes au dessus de cette limite n'ont pas été listés.</p>
<br><br>
<style type=\"\"text/css\"\">body{font: .8em \"\"Lucida Grande\"\", Tahoma, Arial, Helvetica, sans-serif;}
ol{margin:0;}
table{width:80%;}
thead{}
thead th{font-size:120%;text-align:left;}
th{border-bottom:2px solid rgb(79,129,189);border-top:2px solid rgb(79,129,189);padding-bottom:10px;padding-top:10px;}
tr{padding:10px 10px 10px 10px;border:none;}
#middle{background-color:#900;}
</style>
<body BGCOLOR=\"\"white\"\">
$tableHtml
</body>
\"@

# Regular Expression <td> <td>
$regexsubject = $HTMLmessage
$regex = [regex] '(?im)<td>'

$msg = New-Object Net.Mail.MailMessage

# if have data send email.
if ($regex.IsMatch($regexsubject)) {
$smtpServer=$server
$smtp = New-Object Net.Mail.SmtpClient -arg $smtpServer
$msg.From = $fromemail
$msg.To.Add($users)
$msg.Subject = \"Espace disque faible\"
$msg.IsBodyHTML = $true
$msg.Body = $HTMLmessage
$smtp.Send($msg)
}[/code:1]

J'essaie de faire la même chose sur les serveurs LINUX avec cette commande:
[code:1][decimal]$thresholdspace = 15 # % of disk space
$critical=8 # critical value. Show red
[System.Array]$results = foreach ($cmp in $computers) {
$client = New-SshSession -computername $server -Username user -password pwd
(Invoke-SshCommand -ComputerName $Servers -Command \"df -h\"«») |
where{($_.Taille -gt 1G) -and (($_.Dispo/$_.Taille*100) -lt $thresholdspace) }|
select @{n='Nom du serveur' ;e={\"{0:n0}\" -f ($cmp)}},
@{n='Taille totale (Gb)' ;e={\"{0:n2}\" -f ($_.Taille/1gb)}},
@{n='Espace libre (Gb)';e={\"{0:n2}\" -f ($_.Dispo/1gb)}},
@{n='Pourcentage libre';e={\"{0:n2}%\" -f ($_.Dispo/$_.Taille*100)}}
}[code:1]

Mais je dois merder quelque part.... mais où ?<br><br>Message édité par: gregmurf, à: 25/02/15 16:18 [/code:1]

Powershell: la vie est belle :)

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

Plus d'informations
il y a 11 ans 3 mois #19128 par Toper
up ?

Powershell: la vie est belle :)

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

Plus d'informations
il y a 11 ans 3 mois #19129 par Philippe
salut gregmurf

A tu bien lu la documentation pour Invoke-SshCommand ?
ou
[code:1]Get-Help Invoke-SshCommand -Full[/code:1]<br><br>Message édité par: 6ratgus, à: 26/02/15 13:45

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

Plus d'informations
il y a 11 ans 3 mois #19130 par Toper
J'ai honte....

j'arrive donc à exporter le résultat de la commande dans un mail, mais je bloque maintenant sur la mise en forme.
En effet, les intitulés de noms de volumes, d'espace disque, etc... contiennent des points, ou des \&quot;%\&quot;

Par exemple, comment mettre le nom du volume \&quot;sys. Fich.\&quot; à la place de \&quot;volumename\&quot; ici ? [code:1]@{n='Nom du volume' ;e={\&quot;{0:n0}\&quot; -f ($_.volumename)}},[/code:1]

Powershell: la vie est belle :)

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

Plus d'informations
il y a 11 ans 3 mois #19131 par Philippe
je dirais .. merci d'ouvrir un nouveau sujet !!!
mais on n'est pas sur certain forum très strict \&quot; pour l'instant ! \&quot;

pour ton pb de volumename essai en rajoutent $( avant et ) après pour chaque variable avec propriété à affiché
ex :
[code:1] @{n='Nom du volume' ;e={\&quot;{0:n0}\&quot; -f $($_.volumename)}},[/code:1]

Message édité par: 6ratgus, à: 26/02/15 16:59<br><br>Message édité par: 6ratgus, à: 26/02/15 17:00

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

Plus d'informations
il y a 11 ans 3 mois #19132 par xyz
6ratgus écrit:

pour ton pb de volumename essai en rajoutent $( avant et ) après pour chaque variable avec propriété à affiché

Ce n'est pas nécessaire avec cet opérateur.
Vérifie si tes données à formater sont correctes.

Tutoriels PowerShell

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

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