Объединение команд PowerShell для использования в программе Java

Объединение команд PowerShell для использования в программе Java

Я пишу программу Java, которая будет вытаскивать журналы, связанные с процессами для приложения. Для этого мне нужно получить процессы Java, созданные в определенном месте. Мне нужно знать, как получить эту информацию на компьютере Windows с помощью одной команды или комбинации команд, которые можно передать в одной строке.

Я немного поизучав, остановился на PowerShell как на варианте. Я получаю результат, используя две отдельные команды PowerShell:

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

введите описание изображения здесь

Но когда я объединяю эти два варианта, никаких результатов не получается:

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

введите описание изображения здесь

Может ли кто-нибудь помочь мне объединить эти два варианта или есть другие варианты, кроме PowerShell?

решение1

Хорошо, это означает, что вы совсем новичок в PowerShell и еще не потратили достаточно времени, чтобы вникнуть в него, поэтому стройте догадки. Это вам не поможет.

Не наращивание просто приведет к ненужной путанице, разочарованию, ошибкам, плохим привычкам, заблуждениям и т. д. Поэтому я предлагаю наращивать темп, чтобы вы могли уменьшить / избежать таких переживаний. Тем не менее, с любым обучением будут происходить некоторые догадки / эксперименты, потому что такова природа зверя.;-}

Не смешивайте синтаксис Java с кодом PowerShell. В PowerShell есть много зарезервированных слов, переменных и особых способов, которыми вам нужно сконструировать код для запуска скриптов, команд и .exe.

Точка с запятой в PowerShell не делает эту строку однострочной.(pipeline one liner). Это две отдельные независимые команды/блоки кода на одной строке. Это терминатор оператора.

Прежде чем выполнять команды PowerShell, необходимо уже находиться в сеансе PowerShell.

Итак, это...

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

… работает, потому что вы, по-видимому, уже запустили PowerShell и вручную ввели эту команду.

Этот..

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

… не выполняется, поскольку вы не находитесь в сеансе PowerShell перед выполнением команды PowerShell.

Видеть: Справка по командной строке 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

Итак, ваш…

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

PowerShell: запуск исполняемых файлов

При использовании PowerShell необходимо пониматьПравила цитированияимеет первостепенное значение.

Цитаты PowerShell – Расширять или не расширять, вот в чем вопрос

История правил цитирования PowerShell

Опять же, поскольку вы новичок, потратьте необходимое время на:

...и используйте всеникаких затрат / бесплатные ресурсывсечерез Интернет. Как и MS TechNetРуководство по выживанию в Windows PowerShell.

Связанный контент