2016-03-24 36 views
0

Üzerinde çalıştığım bir projenin bir parçası olarak, bir kullanıcının masaüstünden kopyalanan bir çift dosyayı bir bilgisayara giriş yapan her yeni kullanıcıya almam gerekiyor. Bir masaüstü ortamı yöneticisi aracılığıyla aşağıdaki komutu çalıştırıyorum.PowerShell externall komutu başarısız oluyor

%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" 

Bu komutu kendi başına PowerShell içinden çalıştırmak iyi çalışıyor, ancak dışarıdan aktardığımda hata çıkıyor.

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 

ben bu sorunu çözmek, hatta belki bunu yapmak için bile daha iyi bir yolu var benim biçimlendirilmesinde ayarlamak gerekir emin değilim. Herhangi bir girdi büyük ölçüde takdir edilecektir.

+1

Escape'"' etrafında '* ADI *' MathiasR.Jessen @ bir blackslash –

+0

teşekkür ederiz ile! Bunu bilmiyordum. Bunu yapmanın sebebi nedir? –

+0

Komuta iyi bakın. '' get-childitem ... '* İsim * "daha fazla şeyler" '- tüm' cmd.exe'ler 3 dizgidir, 2 alıntıdır ve ortada bir alıntı yoktur. Komut dizesinin kendisinde de tek tırnak işaretine geçebilirsiniz: '' get-childitem ... '* Name *' more stuff '' –

cevap

1

Başına Mathias öneri \ öncesinde ekleyerek "hataları giderilmiş.

İlgili konular