IF-Anweisung funktioniert nicht in der Powershell
Ich habe versucht, eine IF-ELSE-Klausel zur Arbeit in mein kleines powershell v2-Skript, und ich denke, ich habe einige Probleme mit meiner Analyse. Hier der code, den ich derzeit habe:
$dir = test-path C:\Perflogs\TestFolder
IF($dir -eq "False")
{
New-Item C:\Perflogs\TestFolder -type directory
get-counter -counter $p -Continuous | Export-Counter C:\PerfLogs\TestFolder\Client_log.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes
}
Else
{
get-counter -counter $p -Continuous | Export-Counter C:\PerfLogs\TestFolder\Client_log.csv -Force -FileFormat CSV -Circular -MaxSize $1GBInBytes
}
Also im Grunde will ich es schaffen die $dir-variable testen um zu sehen, ob der Weg, den ich gehen wollen, vorhanden ist. Wenn nicht, ist es sollte, erstellen Sie diesen Ordner und führen Sie die Zähler. Wenn es funktioniert, sollte es nicht zu den Ordner erstellen sollte aber noch laufen Zähler.
Habe ich $p definiert an anderer Stelle, und die get-Zähler-Anweisung funktioniert. Rechts jetzt, ob der Ordner existiert oder nicht, ich erhalte eine Fehlermeldung über das new-item nicht funktioniert.
Bin ich mit den falschen operator -eq nach tun, dass zu testen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie haben:
weil der string
"False"
ist nicht gleich dem booleschen Wert$false
.Versuchen Sie dies:
zu diesem:
x0n schon beantwortet, also ich nicht wiederholen, aber ich bemerkte ein weiteres "Manko" Sie sollten sich bewusst sein.
Deinen code versucht zu testen, die für die Existenz eines Verzeichnisses "TestFolder", aber Sie test-path-Befehl, beschränkt sich nicht auf die Prüfung nur für Verzeichnisse. Bedeutung, wenn Sie tatsächlich zufällig eine Datei mit dem selben Namen "TestFolder" es wird trotzdem true zurückgegeben.
Vorsichtiger zu sein, sollten Sie die "-PathType Container" wechseln, so dass es scheitern wird, wenn es bereits eine Datei mit diesem Namen, und nur, wenn es ein Verzeichnis mit diesem Namen.
$dir = test-path C:\Perflogs\TestFolder -PathType Container
Zusätzlich zu den anderen Antworten zu
$false
habe ich noch syntax Probleme mit v3. Speziellnicht funktioniert hat.
funktioniert hat. YMMV, aber ich habe Sie gewarnt.
if
, aber es geschieht, wenn Rohrleitungen AusgabeForEach-object
. I. e., wenn ich Pfeife-Ausgang fürForEach-object
und wenn der öffnenden geschweiften Klammer nachForEach-object
ist auf der nächsten Zeile anstatt auf der gleichen Linie, dann bekomme ich die run-time-prompt: "cmdlet ForEach-Object at command pipeline position 1 Supply-Werte für die folgenden Parameter an: / Prozess[0]:" Jedoch, dass die Eingabeaufforderung nicht auftreten, wenn ich eine Zeile Fortsetzung zurück-tick nachForEach-object
.