2011-01-09 18 views
68

Bir PowerShell komut dosyasını kullanarak bir EXE dosyasını çalıştırmaya çalışıyorum. Bir sorun olmadan çalışır komut satırını kullanırsanız (ilk onu çağırmak için yürütülebilir ve parametrelerin serinin adını kaynağı):Bir PowerShell betiği kullanarak bir EXE dosyası yürütme

"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode 

Ama bir senaryonun içine aynı şeyi yapıyor hata verir:

The term '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

(I "&" operatörünü kullanarak komutu çağrılan.)

Bu sorunu nasıl düzeltebilirim?

+3

Kodunuzu yazın, lütfen. Sorunun yattığı yer olduğu için, bakmak zorunda kalmak, tahmin etmekten çok daha kolaydır. –

cevap

79
& "C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode

veya

[System.Diagnostics.Process]::Start("C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe", "C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode")

GÜNCELLEME: üzgünüm ben cümle "(&" operatörünü kullanıyorum komutu çağrılan ")" cevapsız. Yolu dinamik olarak değerlendirirken bu problemi yaşadım. Invoke İfade inşaat deneyin: EXE ve tek bir dize örn ilk argüman hem belirterek konum gibi

Invoke-Expression "& `"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe`" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode"
+0

Orijinal sorudaki komutun neredeyse tam olarak, PS2.0'daki bir VM'de çalışmamın tek nedeni. Ama aynı komut şu anda PS4.0 sisteminde başarısız oluyor. İlginçtir, ben de TestExecute'u arıyorum. En iyi seçenek 2'yi beğendiğimi düşünüyorum, bir şans vereceğim, teşekkürler! – EJA

22

görünüyor; '"C:\Program Files\Automated QA\TestExecute 8\Bin\TestExecute.exe" C:\temp\TestProject1\TestProject1.pjs /run /exit /SilentMode'. Bu işe yaramaz. Genel olarak şöyle yolunda bir alana sahip bir yerli komutu çağırmak: cmdlet'indeki, işlevi, yerli exe göreli veya mutlak yol: & bir komut tanımlayan dize tarafından takip edilecek beklediğini olan

& "c:\some path with spaces\foo.exe" <arguments go here> 

. Gerektiğinde argümanlar alıntı çalışan

& "c:\some path with spaces\foo.exe" 

Başlat: sadece bu çalışma aldıktan sonra

. Argümanlarınızın iyi görünmesine rağmen (boşluk yok, PowerShell tarafından yorumlanan başka özel karakterler yok).

+1

Komut dosyası ve exe aynı klasörde bulunuyorsa, powershell komut dosyasını tam yol olmadan yürütmek için zaten var mı? Ya da göreceli bir yol kullanmak mümkün mü? – guanome

+6

Eğer exe aynı klasördeyse, bunu yapabilirsin. \ Foo.exe 've göreceli bir yol da kullanabilirsin .. \ .. \ foo.exe 've' ve 'boşluklu göreli bir yol. . \ .. \ boşluklu boşluklar \ foo.exe '. –

+0

Komutunuzda ** borular ** bulunduğunuzda tırnak işaretleri kullanmanız gerektiğinden: cmd/c "C: \ temp \ strarc.exe -cjd: M: \ | C: \ temp \ strarc.exe -s: 8 -XD: N: \ " '. – larkee

-1

terimi 'greyhound.exe' Bir cmdlet, işlevi, komut dosyası veya çalıştırılabilir program adı olarak tanınmamaktadır ...

Ama güvenilir bir komut olarak çalıştırırsanız. \ Greyhound.exe daha sonra çalıştırılabilir çalışır.

İlgili konular