【问题标题】:Can I use PowerShell 1.0 to list processes along with their PIDs and Command Lines?我可以使用 PowerShell 1.0 列出进程及其 PID 和命令行吗?
【发布时间】:2010-11-05 14:36:05
【问题描述】:

由 OP 编辑​​: 我的问题预设了 PowerShell 是完成这项工作的最佳工具。有一种更简单的方法可以实现我的目标。一位朋友刚刚告诉我:iisapp.vbs。它无需 PowerShell 即可准确显示我需要的信息。


我正在处理在本地运行的数十个 ASP.NET 网站,当我想调试一个名为 foo.site.com 的特定网站时,我会执行以下步骤:

  1. 运行 Process Explorer(来自 SysInternals)并在其命令行上查找哪个 w3wp.exe 是通过 foo.site.com 启动的。

  2. 记下该 w3wp.exe 进程的进程 ID (PID)。

  3. 在 Visual Studio 中附加到该进程 ID。

有没有办法编写一个 PowerShell 脚本来打印我计算机上运行的每个 w3wp.exe 进程的 PID 和命令行参数?

当我运行 get-process w3wp 时,我得到:

> get-process w3wp

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    688      28    44060      64576   226     2.75    196 w3wp
    750      26    48328      68936   225     3.38   1640 w3wp
    989      36    54596      83844   246     4.92   1660 w3wp
    921      33    54344      80576   270     4.24   5624 w3wp
    773      27    48808      72448   244     2.75   5992 w3wp

没有命令行信息:(

谢谢!

编辑:我正在寻找传递给 w3wp 的命令行参数。

【问题讨论】:

标签: powershell powershell-1.0


【解决方案1】:

这应该可行:

获取进程 |格式表ID,路径

【讨论】:

  • 罗伯特,谢谢您的回答。如果我的问题不清楚,我深表歉意。我正在寻找启动进程的命令行(包括参数)。
  • 抱歉,我想我太急于回答了。在发布之前需要阅读问题两次:)
【解决方案2】:

gwmi win32_process -filter "name='w3wp.exe'" | select name,processId,commandLine

它应该可以解决问题。我觉得很奇怪powershell默认不提供命令行信息。注意:我只在 powershell 2.0 中测试过,但由于它使用 wmi,它应该在 1.0 中工作。

编辑:Tim Stewart 使用的最终版本(为避免显示问题,请参阅评论):
gwmi win32_process -filter "name='powershell.exe'" | format-table -autosize name,processId,commandLine

【讨论】:

  • SuperBloup,成功了!我对 PowerShell 1.0 的布局感到失望。即使输出只占屏幕的一半,PowerShell 也会截断命令行。我发现将所有内容通过管道传输到 ft -autosize 可以让我看到整个命令行。谢谢!
  • 至于Powershell默认不提供命令行信息:blogs.msdn.com/oldnewthing/archive/2009/02/23/9440784.aspx
【解决方案3】:

我的第一反应是使用 get-process 并查看 startinfo 属性:

get-process w3wp | select-object id, path, @{Name="Args";Expression = {$_.StartInfo.Arguments}}

不幸的是,这不起作用,因为 $_.StartInfo.Argments 始终为空。不过,WMI 可以工作。

get-wmiobject win32_process -filter "name='w3wp.exe'" | select-object processid, commandline

【讨论】:

  • 布莱恩,感谢您的回答。替换:get-wmio[jb]ect 为 get-wmio[bj]ect 是使第二个命令正常工作所必需的。
  • 蒂姆,我修正了转置的字母。打字太快。 FWIW 如果不清楚“gwmi”是“Get-WmiObject”cmdlet 的标准别名,“select”是“Select-Object”的标准别名
猜你喜欢
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 2013-07-14
  • 2021-10-21
相关资源
最近更新 更多