Estoy escribiendo un programa Java que extraerá los registros relacionados con el proceso de una aplicación. Para ello necesito crear los procesos de Java en una ubicación específica. Necesito saber cómo obtener esta información en un cuadro de Windows usando un solo comando o una combinación de comandos que se puedan pasar en una sola línea.
Estudié un poco y terminé con PowerShell como opción. Obtengo el resultado usando dos comandos de PowerShell separados:
Powershell
Get-Process java| where {$_.path -like 'D:\ptc\Windchill_11.0\Java\jre\bin\java.exe'}
Pero cuando combino los dos, no se obtienen resultados:
Powershell ; Get-Process java ^| where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'}
¿Alguien puede ayudarme a combinar los dos o existe alguna otra opción además de PowerShell?
Respuesta1
Bien, esto significa que eres muy nuevo en PowerShell y aún no has invertido el tiempo necesario para mejorarlo, así que haz algunas conjeturas. Eso realmente no te ayuda.
No aumentarlo solo conducirá a confusión innecesaria, frustración, errores, malos hábitos, conceptos erróneos, etc. Por lo tanto, mi sugerencia de aumentar un poco es que pueda disminuir o evitar tales experiencias. Aún así, con cualquier aprendizaje, ocurrirán algunas conjeturas/experimentos, porque esa es la naturaleza de la bestia.;-}
No mezcle la sintaxis de Java con el código de PowerShell. Hay muchas palabras reservadas, variables en PowerShell y formas específicas de construir código para ejecutar scripts, comandos y archivos .exe.
El punto y coma en PowerShell no convierte esa línea en una sola línea(tubería de un revestimiento). Son dos bloques de código/comandos independientes separados en la misma línea. Es un terminador de declaración.
Debe estar en una sesión de PowerShell antes de poder ejecutar comandos de PowerShell.
Así que esto...
Get-Process java| where {$_.path -like "D:\ptc\Windchill_11.0\Java\jre\bin\java.exe"}
… funciona, porque aparentemente ya iniciaste PowerShell y escribiste este comando manualmente.
Este..
Powershell ; Get-Process java ^| where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'} enter image description here
… falla porque no está en una sesión de PowerShell antes de ejecutar un comando de PowerShell.
Ver: Ayuda de línea de comandos de PowerShell.exe
# EXAMPLES
# Create a new PowerShell session and load a saved console file
PowerShell -PSConsoleFile sqlsnapin.psc1
# Create a new PowerShell V2 session with text input, XML output, and no logo
PowerShell -Version 2.0 -NoLogo -InputFormat text -OutputFormat XML
# Execute a PowerShell Command in a session
PowerShell -Command "Get-EventLog -LogName security"
# Run a script block in a session
PowerShell -Command {Get-EventLog -LogName security}
# An alternate way to run a command in a new session
PowerShell -Command "& {Get-EventLog -LogName security}"
# To use the -EncodedCommand parameter:
$command = "dir 'c:\program files' "
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand
Entonces el tuyo es...
PowerShell -Command "Get-Process java ^ | where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'}"
PowerShell: Ejecución de ejecutables
Al utilizar PowerShell, comprenderReglas de cotizaciónes de suma importancia.
Cotizaciones de PowerShell: expandirse o no expandirse, esa es la cuestión
Una historia de las reglas de cotización de PowerShell
Nuevamente, como eres nuevo, dedica el tiempo necesario a:
...y usar todos lossin costo / recursos gratuitostodoa través de la web. Como MS TechNetGuía de supervivencia de Windows PowerShell.