2010-09-25 10 views
5

Estoy intentando convertir abc.exe/u "c: /programs/abc.dll" al script de powershell nadie puede explicar cómo hacerlo.Parámetro que pasa de PowerShell al ejecutable que tiene interruptores

¿cómo puedo ejecutar el * .exe teniendo interruptores con parámetros ??

gracias ..

Sunny

+0

Como puede ver en las respuestas hasta ahora, la gente está adivinando. Necesitas mostrarnos una línea de comando real que no funciona. –

Respuesta

1

Si la sintaxis normal, no ayuda a salir usted podría intentar:

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

Ver también: Documentation for System.Diagnostics.ProcessStartInfo.

+0

esta sintaxis popup cmd console para ejecutar el script como $ 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) da el error como" No se puede ejecutar el ensamblado en c: programfiles \ .... "¿Alguna solución? – uaslam

+0

Esto se debe a que tiene que encapsular una ruta que contiene espacios entre comillas, use \ "\" alrededor de la ubicación dll. –

+0

Todas las consultas anteriores no funcionan pero hice una solución. Creé un archivo abc.bat que implementó toda la lógica en él y simplemente lo ejecuté a través de PS. ej. cmd/c ./abc.bat ... gracias a todos por la ayuda .. sunny – uaslam

4

Debe ser tan sencillo como:

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

Sin embargo, puede que tenga problemas con cita y otros personajes que consiguen interpretadas por PowerShell. Por lo general, quouting un argumento será suficiente, pero si que todavía no funciona se puede utilizar Puesta en proceso de PowerShell 2.0 por ejemplo:

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

Si tiene instalado PowerShell Community Extensions se puede utilizar una utilidad llamada echoargs.exe para solucionar argumentos que pasan a exe's e.g .:

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

Los Echoargs muestran los argumentos exactamente como los visualiza el EXE.

+0

ejecutando c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe/u "C: \ Program Files \ Abc.dll "da error 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: advertencia RA0000: No se registraron tipos En la línea: 1 caracteres: 57 + c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe <<< uaslam

+0

Tengo limitaciones para instalar las extensiones de la comunidad de PowerShell así que no he comprobado que de todos modos se esté ejecutando el proceso de inicio c: \ Windo ws \ Microsoft.NET \ Framework \ v2.0.50727 \ regasm.exe -arg @ '/ u C: \ Archivos de programa \ Abc.dll da 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 ' @ Token no reconocido en el texto fuente. '@ – uaslam

+0

Start-Process está en PowerShell 2.0 y si usa esta ruta no debe haber espacio antes de la terminación' '@ 'y el comienzo de la línea. Y debe comenzar una nueva línea después de la apertura '@ '. –

Cuestiones relacionadas