jeevanreddymandali
jeevanreddymandali

Reputation: 395

Power Shell: If condition variable comparison not working

I have a piece of code comparing two values, and if the condition is satisfied it sends out an email. But it is not working, help is appreciated.

code:

$filesize =  Get-ChildItem $filename | Select-Object Length | Format-Wide
$filesize
$num=1265
$num
if("$filesize" -gt "$num")
{

$SMTPServer = "10.20.19.94"

$SMTPPort = 25

$username = "[email protected]"



#Define the receiver of the report

$to = "[email protected]"

$subject = "VM Snapshot Report"

$body = "VM Snapshot Report"

$attachment = new-object Net.Mail.Attachment($filename)

$message = New-Object System.Net.Mail.MailMessage

$message.subject = $subject

$message.body = $body

$message.to.add($to)

$message.from = $username

$message.attachments.add($attachment)



$smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);

$smtp.EnableSSL = $false

#$smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);

$smtp.send($message)

write-host "Mail Sent"
}

output:

1262                                                                                                                                 
1265
Mail Sent

Why is it sending email if $filesize=1262 is less than $num=1265. It is killing me.

Upvotes: 0

Views: 47

Answers (1)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 174555

Because you're not comparing two numbers, you're comparing two strings.

Remove the Format-Wide command from the first pipeline, and remove the quotes around the arguments in your if condition:

$filesize = Get-ChildItem $filename | Select-Object Length
$num = 1265
if($filesize.Length -gt $num) {
  <# ... #>
}

Upvotes: 2

Related Questions