2010-09-25 9 views

Odpowiedz

1

Jeżeli normalny składnia nie pomóc można spróbować:

$psi = New-Object System.Diagnostics.ProcessStartInfo "abc.exe" 
$psi.Arguments = "/u c:/programs/abc.dll" 
[System.Diagnostics.Process]::Start($psi) 

Zobacz także: Documentation for System.Diagnostics.ProcessStartInfo.

+0

ta składnia popup cmd console do wykonania skryptu jako $ psi = New-Object System.Diagnostics.ProcessStartInfo "c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe" $ psi.Arguments = "/ u C: \ Program Files \ Abc.dll " [System.Diagnostics.Process] :: Start ($ psi) daje błąd jako" Nie można wykonać zespołu przy c: programfiles \ .... "Jakieś rozwiązanie? – uaslam

+0

To dlatego, że musisz hermetyzować ścieżkę zawierającą spacje w cudzysłowie, użyj \ "\" wokół lokalizacji dll. –

+0

Wszystkie powyższe zapytania zestawów nie działają, ale stworzyłem rozwiązanie. Stworzyłem plik abc.bat zaimplementowałem w nim całą logikę i po prostu uruchom to poprzez PS. np. cmd/c ./abc.bat .. dziękuję wszystkim, którzy pomogli .. sunny – uaslam

4

powinno być tak proste, jak:

C:\PS> abc.exe /u c:/programs/abc.dll 

Można jednak napotkasz problemy z cytowanie i innych znaków, które się interpretowanych przez PowerShell. Zazwyczaj quouting argument wystarczy, ale jeśli nadal nie działa, można użyć start-Process w PowerShell 2.0 np:

C:\PS> start-process abc.exe -arg @' 
... 
'@ 

Jeśli masz PowerShell Community Extensions zainstalowaniu można użyć narzędzia o nazwie echoargs.exe rozwiązywać przechodzącej args do exe. np .:

C:\PS> echoargs /u c:/programs/abc.dll 
Arg 0 is </u> 
Arg 1 is <c:/programs/abc.dll> 

Echoargs wyświetla argumenty dokładnie tak, jak widzi je program EXE.

+0

wykonanie c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe/u "C: \ Program Files \ Abc.dll "daje błąd PS C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727> c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe/u" C: \ Program Files \ Abc.dll " regasm.exe: RegAsm: ostrzeżenie RA0000: Żadne typy nie były niezarejestrowane W linii: 1 znak: 57 + c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe <<< uaslam

+0

Mam ograniczenie do instalowania rozszerzeń społeczności PowerShell więc nie sprawdzałem, czy w ogóle wykonuję proces startowy c: \ Windo ws \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe -arg @ '/ u C: \ Program Files \ Abc.dll daje PS C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727> start-process c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe -arg @ '/ u C: \ Program Files \ Abc.dll ' @ Nierozpoznany token w tekście źródłowym. '@ – uaslam

+0

Start-Process jest w PowerShell 2.0 i jeśli pójdziesz tą trasą, nie może być spacji przed końcem '' @ 'i początkiem linii. I musisz zacząć nową linię po otwarciu '@ ''. –

Powiązane problemy