Ich schreibe eine Reihe von PowerShell-Skripts, um die Größe der verschiedenen Ordner zu überwachen. Ich bin auf einen Fehler gestoßen, und ich habe keine Ahnung, was das verursacht. HierPowershell-Funktion zu viele Parameter übergeben
ist der Code, mit Write-Host
zeigen, was ich erwarte und was die Variablen $ip
und $loc
tatsächlich enthalten:
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
}
}
Wenn ich den Befehl ausführen:
testPath("192.168.10.10","myfolder1\myfolder2\")
Ich erhalte ein "falsches" Ergebnis, aber wenn ich renne:
Der Befehl gibt True (wie es sollte) zurück.
Was habe ich verpasst? Ich habe versucht zu erzwingen, dass die Variablen gesetzt werden mit:
$mypath = getFullPath -loc "$loc" -folder "$folder"
aber es gibt keine Änderung. Wenn es etwas ändert, ist dies auf PowerShell Version 4.
Dies löste es, vielen Dank! Ich werde auch das Skript (und einige andere tatsächlich) mit Ihren anderen Vorschlägen aktualisieren. Ich möchte, dass Powershell mehrere Argumente mit Klammern unterstützt. Ich glaube, dass die Argumente mit Leerzeichen getrennt nicht so sauber aussehen. – Elmepo