2016-03-24 11 views
0

Als Teil eines Projekts, an dem ich arbeite, muss ich ein paar Dateien vom Desktop eines Benutzers auf jeden neuen Benutzer kopieren, der sich bei einem Computer anmeldet. Ich führe den folgenden Befehl über einen Desktop-Environment-Manager aus.PowerShell externall command failing

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -command "get-childitem -path $env:systemdrive\Users\Administrator\Desktop\* | Where-Object {$_.Name -like "*NAME*"} | Copy-Item -Destination $env:userprofile\Desktop" 

selbst den Befehl Ausführen aus Powershell funktioniert gut, aber wenn ich es von außen bin Leiten Fehler heraus.

At line:1 char:100 
+ ... {$_.Name -like *NAME*} | Copy-Item -Destination 
$env:userprofile\Desktop\} 
+     ~ 
You must provide a value expression following the '-like' operator. 
At line:1 char:102 
+ ... $_.Name -like *NAME*} | Copy-Item -Destination 
$env:userprofile\Desktop\} 
+     ~ 
You must provide a value expression following the '*' operator. 
At line:1 char:102 
+ ... $_.Name -like *NAME*} | Copy-Item -Destination 
$env:userprofile\Desktop\} 
+     ~~~~~~~~~~ 
Unexpected token 'NAME*' in expression or statement. 
+ CategoryInfo   : ParserError: (:) [],  
ParentContainsErrorRecordException 
+ FullyQualifiedErrorId : ExpectedValueExpression 

Ich bin mir nicht sicher, was ich in meiner Formatierung anpassen muß dieses Problem zu beheben, oder sogar vielleicht gibt es sogar einen besseren Weg, dies zu tun. Jede Eingabe würde sehr geschätzt werden.

+1

Escape the'"' 'um * Name *' mit einem blackslash –

+0

@ MathiasR.Jessen Thank you! Ich wusste nichts davon. Was verursacht die Notwendigkeit, das zu tun? –

+0

Sehen Sie sich den Befehl gut an. '" get-childitem ... "* Name *" more stuff "' - alle 'cmd.exe' sieht 3 Strings, 2 in der Mitte und eine in der Mitte. Sie könnten auch innerhalb der Befehlszeichenfolge in einfache Anführungszeichen wechseln: '" get-childitem ... '* Name *' more stuff "' –

Antwort

1

Per Mathias Vorschlag Hinzufügen der \ vor dem "die Fehler behoben.