Combinando comandos do PowerShell para uso em um programa Java

Combinando comandos do PowerShell para uso em um programa Java

Estou escrevendo um programa Java que extrairá os logs relacionados ao processo de um aplicativo. Para isso preciso criar os processos Java em um local específico. Preciso saber como obter essas informações em uma caixa do Windows usando um único comando ou uma combinação de comandos que podem ser passados ​​em uma única linha.

Estudei um pouco e acabei com o PowerShell como opção. Obtenho o resultado usando dois comandos separados do PowerShell:

Powershell
Get-Process java| where {$_.path -like 'D:\ptc\Windchill_11.0\Java\jre\bin\java.exe'}

insira a descrição da imagem aqui

Mas quando combino os dois, nenhum resultado é obtido:

Powershell ; Get-Process java ^| where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'}

insira a descrição da imagem aqui

Alguém pode me ajudar a combinar os dois ou existe alguma outra opção além do PowerShell?

Responder1

OK, isso significa que você é muito novo no PowerShell e ainda não investiu o tempo necessário para aprimorá-lo, portanto, estou fazendo algumas suposições. Isso realmente não ajuda você.

Não acelerar apenas levará a confusão desnecessária, frustração, erros, maus hábitos, equívocos, etc. Portanto, minha sugestão de aumentar um pouco é para que você possa diminuir/evitar tais experiências. Ainda assim, com qualquer aprendizado, algumas suposições/experimentações acontecerão, porque essa é a natureza da besta.;-}

Não misture a sintaxe Java com o código do PowerShell. Existem muitas palavras reservadas, variáveis ​​no PowerShell e maneiras específicas de construir código para executar scripts, comandos e .exes.

O ponto e vírgula no PowerShell não torna essa linha uma linha única(pipeline um forro). São dois comandos/blocos de código independentes separados na mesma linha. É um terminador de instrução.

Você já deve estar em uma sessão do PowerShell antes de poder executar comandos do PowerShell.

Então, é isso...

Get-Process java| where {$_.path -like "D:\ptc\Windchill_11.0\Java\jre\bin\java.exe"}

… funciona, porque aparentemente você já iniciou o PowerShell e digitou este comando manualmente.

Esse..

 Powershell ; Get-Process java ^| where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'} enter image description here

… falha porque você não está em uma sessão do PowerShell antes de executar um comando do PowerShell.

Ver: Ajuda da linha de comando do 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

Então, o seu é…

PowerShell -Command "Get-Process java ^ | where {$_.path -like 'D:/ptc/Windchill_11.0/Java/jre/bin/java.exe'}"

PowerShell: executando executáveis

Ao usar o PowerShell, entenderRegras de cotaçãoé fundamental.

Citações do PowerShell – Expandir ou não expandir, essa é a questão

Uma história de regras de cotação do PowerShell

Novamente, como você é novo, gaste o tempo necessário em:

...e use todos ossem custo / recursos gratuitostodospela web. Como o MS TechNetGuia de sobrevivência do Windows PowerShell.

informação relacionada