當我試圖得到一個可執行的命令行參數,我想檢查由Get-Process
返回ProcessStartInfo
結構,但參數字段爲空不管是什麼:爲什麼ProcessStartInfo的參數是空的?
PS C:\> ps notepad
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
272 15 3484 19888 0.39 33696 1 notepad
PS C:\> $(ps notepad).StartInfo
Verb :
Arguments :
CreateNoWindow : False
EnvironmentVariables : {ConEmuBaseDir, ConEmuConfig, ConEmuArgs, PROCESSOR_REVISION...}
Environment : {[ConEmuBaseDir, C:\Users\fluter\Tools\ConEmu.Core.17.1.18.0\Tools\ConEmu], [ConEmuConfig, ], [ConEmuArgs, ], [PROCESSOR_REVISION, 4501]...}
RedirectStandardInput : False
RedirectStandardOutput : False
RedirectStandardError : False
StandardErrorEncoding :
StandardOutputEncoding :
UseShellExecute : True
Verbs : {}
UserName :
Password :
PasswordInClearText :
Domain :
LoadUserProfile : False
FileName :
WorkingDirectory :
ErrorDialog : False
ErrorDialogParentHandle : 0
WindowStyle : Normal
但正如所料,procexp
實用的Sysinternals套件可以得到完整的命令行:
此外,作爲評論中指出,使用Win32 WMI對象接口可以得到它。但是,爲什麼PowerShell缺少這個功能?
可能的[如何獲取PowerShell或C#中的進程的命令行信息]的副本(https://stackoverflow.com/questions/17563411/how-to-get-command-line-info-for-a- process-in-powershell-or-c-sharp) – LotPings
你知道爲什麼參數或startinfo是空的嗎? – fluter
對不起,沒有。必須有一個原因,爲什麼MicroSoft推出Sysinternals。任務管理器增長更好,但我仍然使用ProcExp。 – LotPings