In der PowerShell, können Test-Path (oder etwas anderes) verwendet werden, um zu überprüfen mehrerer Dateien beim deklarieren eine string-array-parameter
Habe ich eine Funktion akzeptiert einen string-array-parameter der files und ich möchte Test-Path (oder etwas anderes), um sicherzustellen, dass alle Dateien, die in den string-array-parameter vorhanden ist. Ich möchte diese in der parameter-Erklärung, wenn möglich.
Ist das möglich?
-Path
akzeptiert ein array von strings, so dass Sie könnte es tun. technet.microsoft.com/en-us/library/hh849776.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ValidateScript
Weitere Dokumentation über die parameter-Validierung besuchen about_Functions_Advanced_Parameters
Können Sie die zu verwendenden parameter eine Validierung Skript wie dieses:
Ist es empfehlenswert, nicht justpass zurück $true/$false der Funktion Sie nicht, gute Fehlermeldungen, verwenden Sie ein Wurf statt, wie ich oben. Dann können Sie es nennen, als eine Funktion, oder Rohr Saiten auf, und es wird Prozess-diejenigen, die Gültigkeitsprüfung, und werfen Sie die Fehler in der Throw-Anweisung für diejenigen, die don ' T pass. Zum Beispiel werde ich übergeben Sie einen gültigen Pfad (C:\Temp) und einen ungültigen Pfad (C:\Nope), um die Funktion und man kann die Ergebnisse sehen:
Edit: ich teilweise zurückziehen, den Kommentar Werfen. Offenbar gibt beschreibende Fehler, wenn die Validierung fehlschlägt, jetzt (danke Paul!). Ich könnte haben geschworen, es wird (zumindest wurde) gab nur eine Fehlermeldung, dass es fehlgeschlagen ist die Validierung und Links aus, was es war, zu validieren und zu dem, was es war die Validierung vor. Für mehr komplexe überprüfungs-Skripts würde ich immer noch verwenden Sie Werfen, aber weil der Benutzer der das script kann nicht wissen, was
$_ -match '^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'
bedeutet, wenn die den Fehler wirft, dass bei Ihnen (Validierung IPv4-Adresse).Als @Matt gesagt.
Test-Path
bereits akzeptiert pipelineeingaben, so dass Sie wirklich nur haben, senden Sie dem array direkt im:Was dann wieder:
Wenn Sie wollen einfach nur wissen, ob ALLE von Ihnen existieren:
Welche ergibt: