I'm writing a set of PowerShell scripts to monitor the size of various folders. I've run into an error, and I've got no idea what's causing it.
Here is the code, with Write-Host showing what I am expecting and what the variables $ip and $loc actually contain:
function getDriveLetter($ip) { Write-Host $ip # prints: 192.168.10.10 myfolder1\myfolder2\ # expected: 192.168.10.10 switch($ip) { "192.168.10.10" {return "E`$"; break} "192.168.10.20" {return "D`$"; break} default {"Unknown"; break} } } function getFullPath($loc,$folder) { Write-Host $loc # prints: 192.168.10.10 myfolder1\myfolder2\ # expected: 192.168.10.10 $drive = getDriveLetter("$loc") $str = "\\$loc\$drive\DATA\$folder" return $str } function testPath($loc,$folder) { $mypath = getFullPath("$loc","$folder") if (Test-Path $mypath) { return $true } else { return $false } } When I run the command:
testPath("192.168.10.10","myfolder1\myfolder2\") I'm getting a "False" result, but if I run:
Test-Path "\\192.168.10.10\E`$\DATA\myfolder1\myfolder2\" The command returns True (as it should).
What have I missed? I've tried forcing the variables to be set with:
$mypath = getFullPath -loc "$loc" -folder "$folder" but there's no change. If it changes anything, this is on Powershell version 4.