2016-06-01 3 views
1

Ich habe ein Skript, das Get-ChildItem verwendet wie folgt:Taskplaner - Powershell - Get-ChildItem - Fehler: Parameter kann nicht gefunden werden ... ‚Datei‘

$files = Get-ChildItem -Path $directories -Recurse -File -Include "package.json" 

, die perfekt funktioniert gut bei der Ausführung von JEDER Powershell-Eingabeaufforderung, AUSSER wenn sie vom Taskplaner ausgeführt wird.

Meine Aufgabe Scheduler Aktion ist:

powershell -version 3.0 -noprofile -nolog -noninteractive -file somescript.ps1 someargs 

Von dem Task-Scheduler erhalte ich die Fehlermeldung: a parameter cannot be found that matches parameter name 'file' für Get-ChildItem.

Was ich weiß:

  • Dieser Fehler verursacht wird, in der Regel, weil die ‚Datei‘ Attribut erst Powershell v3.0
  • hinzugefügt wurde
  • Ich soll Powershell in der Lage sein zu zwingen, in laufen Version 3.0 mit dem Parameter -version 3.0. Dies scheint jedoch keinen Unterschied zum Aufgabenplaner zu machen.

Irgendwelche Ideen in Bezug auf was ich ändern muss?

+0

True, ich habe gerade noexit zum Testen von Windows> Run hinzugefügt. Ich werde das von oben entfernen. –

+0

können Sie versuchen, '-file' zu ​​entfernen und am Ende folgendes hinzuzufügen:' ... | ? {! $ _. psiscontainer} ' –

+0

Welche Version von PS ist installiert? Es sollte keinen Grund geben, den Parameter '-version' dafür zu verwenden. Entweder unterstützt Ihre Version von PS den Parameter oder nicht, aber in beiden Fällen kann das Herabstufen der Version nicht helfen. –

Antwort

0

Interessanterweise ist der gemeldete Fehler irreführend. In diesem Fall liegt der Fehler daran, dass ich mich auf ein zugeordnetes Laufwerk bezog, das nur verfügbar ist, wenn mein Benutzer physisch bei der Box angemeldet ist.

Also, obwohl der gemeldete Fehler ist: Fehler: Parameter kann nicht gefunden werden ... 'Datei', das eigentliche Problem ist, dass ich versuche, ein zugeordnetes Laufwerk, das nicht verfügbar ist, Get-ChildItem übergeben.

Ich konnte dies bestätigen, indem ich ein sehr einfaches Skript schrieb, das nur Get-ChildItem enthielt und versuchte, es als eine geplante Aufgabe sowohl mit als auch ohne "auszuführen, selbst wenn der Benutzer nicht eingeloggt ist" auszuführen.

Es ist nur fehlgeschlagen, wenn diese Box überprüft wurde. Beim Testen mit dem Netzwerkpfad anstelle des zugeordneten Laufwerks wurde das Problem behoben.

Hoffentlich hilft dies anderen in der Zukunft.

Verwandte Themen