by slash85 at 2012-08-29 02:34:08
Hi All,by poshoholic at 2012-08-29 06:11:42
I’ve got a simple ftp function setup as below, however $? is always returned as "TRUE" is there anything obvious i’m doing wrong? :
[script=powershell]function sendFTP
{
$ftp = "ftp://user:pass@myserver/upload/slash.txt"
$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)
$webclient.UploadFile($uri, "slash.txt")
}
sendFTP
IF ($? -eq "TRUE") {
"OK"
}
ELSE {
"FAILED"
}[/script]
Many Thanks for anyhelp,
Slash.
When checking the value of a boolean such as $? to see if it is true, you need to either compare it against the $true variable, like this:
[script=powershell]if ($? -eq $true) {…}[/script]
or simply test for true like this:
[script=powershell]if ($?) {…} # This will only pass if $? is true[/script]
If you are testing against $false you can compare it to $false, like this:
[script=powershell]if ($? -eq $false) {…}[/script]
or you can use the -not operator like this:
[script=powershell]if (-not $?) {…}[/script]
Both of these will allow you to see if $? is currently set to $false.
Always use $true or $false, never "TRUE" or "FALSE". The reason is because both "TRUE" and "FALSE" will both convert to boolean $true. In fact, any non-empty string will convert to boolean $true and any empty string or null string will convert to boolean $false.