使用 WMIC 的命令行输出仍然为空,但显示在 taskmgr gui (Windows)
Command Line output still remains as null using WMIC, but displays in taskmgr gui (Windows)
下面显示了 frmweb.exe
进程的 GUI 显示(附 image/png
)
其中命令行参数可见。
当尝试通过命令行捕获相同内容时,它会抛出空值。
以下步骤粘贴为文本。需要帮助,谢谢
wmic path win32_process get name, commandline /format:"%WINDI%\System32\wbem\csv" | find "frmweb.exe" > commandline.txt
notepad commandline.txt
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,find "frmweb.exe" ,find.exe
截图如下:
使用批处理文件捕获进程的命令行 frmweb.exe
:
@echo off
Set "Process=frmweb.exe"
wmic path win32_process Get Name,Commandline /format:csv | find /I "%Process%" | findstr /i /v "find" >CommandLine.txt
Start "" CommandLine.txt
只是为了确保您确实尝试使用了正确的命令,这就是我可能使用 WMIC
:
执行任务的方式
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:"C:\Windows\System32\wbem\en-US\csv.xsl">"CommandLines.csv"
因为您已将 csv.xsl
文件复制到 C:\Windows\System32\wbem
:
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:csv >commandline.txt
如果您特别希望排除 header 那么:
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:csv|Find ".">commandline.txt
我感觉是您的 CommandLine 中的逗号引起了问题。
如果您更改结果转换为输出的方式可能会有所帮助,所以这里有一个建议。
在文本编辑器中打开您复制到 %SystemRoot%\System32\wbem
的 csv.xsl
并更改行:
<xsl:template match="VALUE" xml:space="preserve"><xsl:value-of select="."/></xsl:template>
收件人:
<xsl:template match="VALUE" xml:space="preserve">"<xsl:value-of select="."/>"</xsl:template>
想法是您要求它对 csv 输出的每个值字段加双引号。
为确保输出实际上不为空,您可以改为测试来自 PowerShell
的命令:
GWMI Win32_Process -F "Name='frmweb.exe'"|Select Name,CommandLine|Export-CSV -U -NoT .\commandline.txt
下面显示了 frmweb.exe
进程的 GUI 显示(附 image/png
)
其中命令行参数可见。
当尝试通过命令行捕获相同内容时,它会抛出空值。 以下步骤粘贴为文本。需要帮助,谢谢
wmic path win32_process get name, commandline /format:"%WINDI%\System32\wbem\csv" | find "frmweb.exe" > commandline.txt
notepad commandline.txt
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,,frmweb.exe
vbox_host
vbox_host,find "frmweb.exe" ,find.exe
截图如下:
使用批处理文件捕获进程的命令行 frmweb.exe
:
@echo off
Set "Process=frmweb.exe"
wmic path win32_process Get Name,Commandline /format:csv | find /I "%Process%" | findstr /i /v "find" >CommandLine.txt
Start "" CommandLine.txt
只是为了确保您确实尝试使用了正确的命令,这就是我可能使用 WMIC
:
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:"C:\Windows\System32\wbem\en-US\csv.xsl">"CommandLines.csv"
因为您已将 csv.xsl
文件复制到 C:\Windows\System32\wbem
:
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:csv >commandline.txt
如果您特别希望排除 header 那么:
WMIC Process Where "Name='frmweb.exe'" Get CommandLine,Name /Format:csv|Find ".">commandline.txt
我感觉是您的 CommandLine 中的逗号引起了问题。
如果您更改结果转换为输出的方式可能会有所帮助,所以这里有一个建议。
在文本编辑器中打开您复制到 %SystemRoot%\System32\wbem
的 csv.xsl
并更改行:
<xsl:template match="VALUE" xml:space="preserve"><xsl:value-of select="."/></xsl:template>
收件人:
<xsl:template match="VALUE" xml:space="preserve">"<xsl:value-of select="."/>"</xsl:template>
想法是您要求它对 csv 输出的每个值字段加双引号。
为确保输出实际上不为空,您可以改为测试来自 PowerShell
的命令:
GWMI Win32_Process -F "Name='frmweb.exe'"|Select Name,CommandLine|Export-CSV -U -NoT .\commandline.txt