Question Passage de variable

Plus d'informations
il y a 16 ans 4 mois #5589 par lafont
Passage de variable a été créé par lafont
Bonjour,

je cherche a peaufiner le script suivant:

[code:1]# Calcul et alerte espace disque
param ($computer = \".\", [switch]$total)

# $file = new-item \"C:\Script\du.txt\" -type file -force

# récupérer tous les disques logiques de l'ordinateur:

get-wmiobject -computer $computer win32_logicaldisk | where {$_.drivetype -eq 3} |
tee-object -variable disques |

select-object @{e={$_.systemname};n=\"Machine\"}
@{e={$_.name};n=\"Disque\"}
@{e={[math]::round($_.freespace/1GB,1)};n=\"Disponible (Go)\"},
@{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n=\"% restant\"},
@{e={[math]::round(($disques|measure-object freespace -sum).sum/1GB,1)};n=\" Espace disponible\"}|Out-File \"C:\Script\du.txt\" -width 55

# Récupération de la valeur \"espace disponible\" dans une variable
$var =

# Traitement du mail
$nom = hostname
$expediteur = \"titi.com\"
$destinataire = \"toto.com\"
$serveur = \"tutu.com\"
$fichier = \"C:\Script\du.txt\"
$objet = \"Monitoring Disques de \" + $nom + \" du \" + [System.DateTime]::Now
if($var -le '20')
{
$texte = \"Bonjour, veuillez trouver ci-joint l'état des disques, ATTENTION ALERTE C\"
}
else
{
$texte = \"Bonjour, veuillez trouver ci-joint l'état des disques\"
}
$message = new-object System.Net.Mail.MailMessage $expediteur, $destinataire, $objet, $texte

$attachment = new-object System.Net.Mail.Attachment \"C:\Script\du.txt\"
$message.Attachments.Add($attachment)
$client = new-object System.Net.Mail.SmtpClient $serveur
$client.Credentials = [System.Net.CredentialCache]::«»DefaultNetworkCredentials

$client.Send($message)
$Attachment.Dispose()[/code:1]

En fait je souhaite que le corps du mail soit différent si l'espace disque est inférieur ou égal à 20. Pour cela je souhaite que le résultat % de l'epace dispo soit passé à la variable $var.

Une idée ? merci !<br><br>Message édité par: Arnaud, à: 12/11/09 00:24

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

Plus d'informations
il y a 16 ans 4 mois #5590 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Passage de variable
Salut,
steflaf écrit:

Une idée ?

L'usage de la balise code permettrait d'être certains qu'il ne manque pas qq caractères par ci, par là.

Peux-tu m'expliquer l'usage et l'approche de la variable $Disques des lignes suivantes :
[code:1]tee-object -variable disques[/code:1]
et [code:1]@{e={[math]::round((($disques|measure-object freespace -sum).sum/1GB«»),1)};n=\&quot;Espace disponible\&quot;}[/code:1]

Sur mon poste le code suivant renvoit des valeurs différentes de celles contenues dans $Disques :
[code:1]
$computer = \&quot;.\&quot;
get-wmiobject -computer $computer win32_logicaldisk |
where {$_.drivetype -eq 3} |
tee-object -variable disques |

select-object @{e={$_.systemname};n=\&quot;Machine\&quot;},
@{e={$_.name};n=\&quot;Disque\&quot;},
@{e={[math]::round(($_.freespace/1GB«»),1)};n=\&quot;Disponible (Go)\&quot;},
@{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n=\&quot;% restant\&quot;},
@{e={[math]::round((($disques|measure-object freespace -sum).sum/1GB«»),1)};n=\&quot;Espace disponible\&quot;}
[/code:1]
cf. le champ \&quot;Disponible (Go)\&quot;(select-object)et \&quot;FreeSpace\&quot; (WMI)
steflaf écrit:

En fait je souhaite que le corps du mail soit différent si l'espace disque est inférieur ou égal à 20.

Je ne sais pas si ici ta notion d'espace disponible est lié à l'ensemble des disques d'une machine ou pour chaque disque d'une machine.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5591 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Passage de variable
Laurent Dardenne écrit:

Sur mon poste le code suivant renvoit des valeurs différentes de celles contenues dans $Disques :

Après vérification, les valeurs renvoyées sont correctes, c'est juste une question d'arrondi.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5592 par lafont
Réponse de lafont sur le sujet Re:Passage de variable
Laurent Dardenne écrit:

Salut,
steflaf écrit:

Une idée ?

L'usage de la balise code permettrait d'être certains qu'il ne manque pas qq caractères par ci, par là.

Peux-tu m'expliquer l'usage et l'approche de la variable $Disques des lignes suivantes :
[code:1]tee-object -variable disques[/code:1]
et [code:1]@{e={[math]::round((($disques|measure-object freespace -sum).sum/1GB«»),1)};n=\&quot;Espace disponible\&quot;}[/code:1]

Sur mon poste le code suivant renvoit des valeurs différentes de celles contenues dans $Disques :
[code:1]
$computer = \&quot;.\&quot;
get-wmiobject -computer $computer win32_logicaldisk |
where {$_.drivetype -eq 3} |
tee-object -variable disques |

select-object @{e={$_.systemname};n=\&quot;Machine\&quot;},
@{e={$_.name};n=\&quot;Disque\&quot;},
@{e={[math]::round(($_.freespace/1GB«»),1)};n=\&quot;Disponible (Go)\&quot;},
@{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n=\&quot;% restant\&quot;},
@{e={[math]::round((($disques|measure-object freespace -sum).sum/1GB«»),1)};n=\&quot;Espace disponible\&quot;}
[/code:1]
cf. le champ \&quot;Disponible (Go)\&quot;(select-object)et \&quot;FreeSpace\&quot; (WMI)
steflaf écrit:

En fait je souhaite que le corps du mail soit différent si l'espace disque est inférieur ou égal à 20.

Je ne sais pas si ici ta notion d'espace disponible est lié à l'ensemble des disques d'une machine ou pour chaque disque d'une machine.


La notion d'espace dispo n'est valable que pour les disques systèmes (généralement C)

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

Plus d'informations
il y a 16 ans 4 mois #5593 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Passage de variable
steflaf écrit:

La notion d'espace dispo n'est valable que pour les disques systèmes (généralement C)

D'accord.
Et pour ces questions ?
Laurent Dardenne écrit:

Peux-tu m'expliquer l'usage et l'approche de la variable $Disques des lignes suivantes :
[code:1]tee-object -variable disques[/code:1]
et [code:1]@{e={[math]::round((($disques|measure-object freespace -sum).sum/1GB«»),1)};n=\&quot;Espace disponible\&quot;}[/code:1]


Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5628 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Passage de variable
Après qq tests sous la V2 :
[code:1]
cls
rv disques
$computer = \&quot;.\&quot;
get-wmiobject -computer $computer win32_logicaldisk |
where {$_.drivetype -eq 3} |
tee-object -variable disques |
Foreach-Object -begin {write-host \&quot;[BEGIN] Disques exist ? $(test-path variable:disques)\&quot; }`
-Process {write-host \&quot;[PROCESS] Disques exist ? $(test-path variable:disques)\&quot; }`
-end {write-host \&quot;[END] Disques exist ? $(test-path variable:disques)\&quot; }
# [BEGIN] Disques exist ? False
# [PROCESS] Disques exist ? False
# [PROCESS] Disques exist ? False
# [END] Disques exist ? True
[/code:1]
Je ne trouves pas d'intérêt à ton usage de Tee-Object.
Un traitement en deux passes pourra t'aider à récupérer l'info recherchée.
[code:1]$Disques=get-wmiobject -computer $computer win32_logicaldisk | where {$_.drivetype -eq 3}
$Result=$Disques|select-object @{e={$_.systemname};n=\&quot;Machine\&quot;},
@{e={$_.name};n=\&quot;Disque\&quot;},
@{e={[math]::round($_.freespace/1GB,1)};n=\&quot;Disponible (Go)\&quot;},
@{e={[math]::round(([int64]$_.freespace/[int64]$_.size*100),0)};n=\&quot;% restant\&quot;},
@{e={[math]::round(($disques|measure-object freespace -sum).sum/1GB,1)};n=\&quot;Espace disponible\&quot;}
$Result[0].\&quot;Espace disponible\&quot;[/code:1]
Reste que j'ai un peu de mal à comprendre la création du membre \&quot;Espace disponible\&quot;...

Tutoriels PowerShell

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

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