我正在編寫一個 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 中的分號不會使該行成為單行(管道一內襯)。這是同一行上的兩個獨立的命令/程式碼區塊。這是一個語句終止符。
您必須已處於 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 會話中。
# 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 時,了解報價規則是最重要的。
再次強調,由於您是新人,請花必要的時間:
...並使用所有無成本/免費資源全部透過網路。就像 MS TechNet 一樣Windows PowerShell 生存指南。